我们将如何查找在同一子文档中满足多个条件而又至少满足其中一个条件的记录?
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 }}
]
} }
});