在子集MongoDB的多个条件
我有这样一个DB:
Job
ID
Name
LeaderID
Workers
ID
Enabled
Person
ID
Name
要检索所有的工作与ID id
一个人不是领导或工作人员之一,我有一个工作查询:
find([{
$match: {
$or:[{"LeaderID": id}, {"Workers.ID": id}]
},
...
]);
那么,如何可以修改这个,以便它只能与"Enabled": true
相匹配的工人。我想$or:[{"LeaderID": id}, {$and: [{"Workers.ID": id}, {"Workers.Enabled": true}]}]
,但我敢肯定它不会工作。
您可以使用$elemMatch运营商的筛选工人为真正启用。例如,你可以这样做:
db.collection.find( {
$or: [
{"LeaderID": 2},
{"Workers": { $elemMatch : {"ID": 2, "Enabled" :false} } }
]
})