我有一个这样的数据库:
Job
ID
Name
LeaderID
Workers
ID
Enabled
Person
ID
Name
要检索ID为id
的人是领导者或工人之一的所有工作,我有一个有效的查询:
find([{
$match: {
$or:[{"LeaderID": id}, {"Workers.ID": id}]
},
...
]);
因此,我该如何修改它,使其仅与带有"Enabled": true
的Workers匹配。
我想到了$or:[{"LeaderID": id}, {$and: [{"Workers.ID": id}, {"Workers.Enabled": true}]}]
,但我确定它不会起作用。
答案 0 :(得分:0)
您可以使用$elemMatch运算符过滤启用为true的工作程序。 例如,您可以这样做:
db.collection.find( {
$or: [
{"LeaderID": 2},
{"Workers": { $elemMatch : {"ID": 2, "Enabled" :false} } }
]
})