MongoDB否定查找同一子文档中满足多个条件的记录

时间:2018-12-30 06:43:53

标签: mongodb mongodb-query

我们将如何查找在同一子文档中满足多个条件而又至少满足其中一个条件的记录?

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

这将返回所有记录,因为$not$elemMatch内部似乎不起作用。

解决方案:

找到解决方法,添加$ and(根据文档说明,与不使用$相同)解决了该问题。

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

0 个答案:

没有答案