У меня в базе данных есть следующая схема :
{
_id: Number,
reagents: [ //Array of objects (embedded) FIND IF certain tag in v_class occurred only once in array
{
_id: Number,
v_class: Array, //A single array (string only): ['TEST','PREMIUM']
},
{
_id: Number,
v_class: Array, //A single array (string only): ['TEST','PREMIUM']
},
{
_id: Number,
v_class: Array, //A single array (string only): ['TEST','PREMIUM']
}
],
other_fields: other_values,
}
MongoPlayground
Вопрос в том:
Как найти только те документы, в которых поле reagents
содержит только один элемент (реагент, встроенные документы), среди v_class
поля массива содержится слово PREMIUM
.
Итак, из выбранной выше коллекции я хочу иметь только документ с _id: 2
, потому что это единственный документ, в котором поле reagents
имеет ТОЛЬКО документ, где в поле с именем v_class
слово PREMIUM
встречается только один раз.
UPD : Я получил несколько простых результатов после этапа $group
, MongoPlayground (после группы). Так что на данный момент мне все еще нужно найти документы, где v_class
поле массива встречается PREMIUM
значение ровно один раз в этом массиве
UPD2: У меня появилась новая версия. MongoPlayground . Этот запрос хорош, но он показывает все PREMIUM
, за исключением того, что произошло только один раз.