MongoDB子集上的多个条件

时间:2019-02-08 00:17:37

标签: node.js mongodb

我有一个这样的数据库:

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}]}],但我确定它不会起作用。

1 个答案:

答案 0 :(得分:0)

您可以使用$elemMatch运算符过滤启用为true的工作程序。 例如,您可以这样做:

db.collection.find( {
$or: [
      {"LeaderID": 2}, 
      {"Workers": { $elemMatch : {"ID": 2, "Enabled" :false} } }
     ]

})