Mongoose - найти документы, в которых массив не имеет совпадений

Вот схема моей коллекции:

{
    _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: ??? } }
});
Структурированный массив Numpy
Структурированный массив Numpy
Однако в реальных проектах я чаще всего имею дело со списками, состоящими из нескольких типов данных. Как мы можем использовать массивы numpy, чтобы...
T - 1Bits: Генерация последовательного массива
T - 1Bits: Генерация последовательного массива
По мере того, как мы пишем все больше кода, мы привыкаем к определенным способам действий. То тут, то там мы находим код, который заставляет нас...
Что такое деструктуризация массива в JavaScript?
Что такое деструктуризация массива в JavaScript?
Деструктуризация позволяет распаковывать значения из массивов и добавлять их в отдельные переменные.
1
0
97
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Я думаю, вы ищете оператора $ нин, попробуйте:

Model.findOne({
   'translations.language': { $nin: [ "spanish", "french" ] }
});

Да! Это именно то, что мне нужно. Кроме того, я не знал, что можно использовать запись через точку с объектами в массивах. Спасибо!

APixel Visuals 05.02.2019 22:05

Другие вопросы по теме