Mongoose / MongoDB находят документ с массивом объектов по нескольким значениям - PullRequest
0 голосов
/ 24 февраля 2020

У меня есть следующая структура документа:

recipients: [
    {
        name: String,
        hidden: Boolean,
    },
    {
        name: String,
        hidden: Boolean,
    },
    // more ...
];

Я хочу запросить все документы для данного name и данного hidden значения в том же объекте , что означает в том же индексе массива получателей. Как я могу запросить, например, «все документы для name = test и hidden = false» (где скрытый находится в том же объекте, что и имя)? Я попробовал следующее

const chats = await Model.find(
            {
                'recipients.name': name,
                'recipients.hidden': false,
            },

Но это все равно возвращает документ, потому что он, кажется, не использует эти 2 условия для одного и того же объекта, но для всех объектов в массиве.

1 Ответ

0 голосов
/ 24 февраля 2020

Неважно, понял. См. Документы MongoDB для $elemMatch (https://docs.mongodb.com/manual/reference/operator/query/elemMatch/#array -of-внедренных документов )

{ 
    "recipients": {
        "$elemMatch": {
            "name": name,
            "hidden": false 
        }, 
    }, 
}
...