Вот схема моей коллекции:
{
_id: {
type: String,
required: true,
unique: true
},
translations: [{
language: String,
translation: String
}]
}
Если у меня есть массив языков, ["spanish", "french"], как я могу найти все документы, в которых Collection.translations не имеет объекта хотя бы для одного из языков в массиве?
Например, это должно быть выбрано:
{
_id: "hello",
translations: [{
language: "not spanish",
translation: "not hola"
}]
}
Но не эти:
{
_id: "hello",
translations: [{
language: "spanish",
translation: "hola"
}]
}
//and
{
_id: "hello",
translations: [{
language: "spanish",
translation: "hola"
}, {
language: "french",
translation: "bonjour"
}, {
language: "not spanish",
translation: "not hola"
}]
}
Вот что у меня есть до сих пор:
Model.findOne({
translations: { $elemMatch: { language: ??? } }
});



Я думаю, вы ищете оператора $ нин, попробуйте:
Model.findOne({
'translations.language': { $nin: [ "spanish", "french" ] }
});
Да! Это именно то, что мне нужно. Кроме того, я не знал, что можно использовать запись через точку с объектами в массивах. Спасибо!