最新消息: 电脑我帮您提供丰富的电脑知识,编程学习,软件下载,win7系统下载。

在子集MongoDB的多个条件

IT培训 admin 9浏览 0评论

在子集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} } }
     ]

})

在子集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} } }
     ]

})

与本文相关的文章

发布评论

评论列表 (0)

  1. 暂无评论