MongoDB находит записи, в которых несколько условий выполняются в одном поддокументе с отрицанием - PullRequest
0 голосов
/ 30 декабря 2018

Как нам найти записи, в которых несколько условий выполняются в одном и том же поддокументе, хотя хотя бы одно из этих условий отменено?

db.getCollection('clients').find( { 
    data: { '$exists': true },
    'data.updates': { '$elemMatch': { 
        name: { $not: /^KB3109103/i }, 
        install_date: { $gt: 128573812 } 
    } } 
});

Возвращает все записи, поскольку $not не делает 'Кажется, что он работает внутри $elemMatch.

Решение:

Нашли обходной путь, добавив $ и (который, согласно документации, такой же, как и без него) решил ее.

db.getCollection('clients').find( { 
    data: { '$exists': true },
    'data.updates': { '$elemMatch': { 
        $and: [
            {name: { $not: /^KB3109103/i }}, 
            {install_date: { $gt: 128573812 }}
        ]
    } } 
});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...