Запрос мангуста для сопоставления одного поля, но разных значений для другого поля ИЛИ нескольких записей для одного конкретного поля

#mongodb #mongoose

Вопрос:

случай: Коллекция содержит записи участников. У каждого Участника может быть значение статуса Активный или Неактивный. Этот статус может измениться. например, запись Участника была добавлена со статусом Неактивна. Несколько дней спустя для этого участника была добавлена еще одна запись, которая изменила его статус на Активный. Этот статус в будущем может снова измениться с другой записью как Неактивный. Запись участника не перезаписывается каждый раз. т. е. в этом примере для этого участника в коллекции будет три документа с отметкой времени.

Требование: Как запросить коллекцию, чтобы возвращались только те члены, у которых более одного статуса, поэтому запрос может быть для членов, имеющих более одного документа ИЛИ, в частности, более одного типа статуса.

Приведенный ниже запрос возвращает все члены, которые имеют либо Активный, либо Неактивный статус. Но требование состоит в том, чтобы получить тех членов, которые имеют оба типа статуса.

       docQuery = Member.find({
        $or: [
          { status: 'Active' },
          { status: 'Inactive' },
        ],
        }).collation({ locale: 'en'});

// NOTE: each member will have a field acctId unique to the member.
 

Если в запросе я изменюсь на $and него, он не вернет результатов, так как каждый статус будет иметь одно из значений.