Mongo Db:对多个数组的elemMatch查询

时间:2018-09-11 06:55:19

标签: mongodb

请在下面找到mongo Db的文档结构

{ _id : 0,
   name : "Employee1",
   distributionList :[ { dlname : "ALLEmployee"}, {dlname:"financeall"} ],
   csrActivity : [ {activityname : "blooddonation"}, {activityname : "tree plantation"} ]

}

我想要隶属于financeall分配清单的员工清单,并选择参加志愿者植树CSR活动。

预期结果集如下

{_id:0,    名称:“ Employee1”,    distributionList:[{dlname:“ financeall”}],    csrActivity:[{activityname:“ tree plantation”}]

}

但到目前为止,仍能够实现查询的以下输出

查询

db.employee.find(
{name : "Employee1"},
{distributionList : {$eleMatch : {dlname : "financeall"}}}
)

输出: {_id:0,    名称:“ Employee1”,    distributionList:[{dlname:“ financeall”}] }

使用$elemMatch获得所需的输出,但找不到如何在同一文档中的多个数组上使用它。还尝试了某些组合,但无法获得预期的结果。

以下查询已尝试但未获得所需的输出

   db.employee.find(
    {name : "Employee1"},
    {distributionList : {$eleMatch : {dlname : "financeall"}}},
    {csrActivity: {$eleMatch : {activityname : "tree plantation"}}}
    )

任何帮助将受到高度赞赏

1 个答案:

答案 0 :(得分:1)

您只拼错了投影运算符$elemMatch

正确的查询是:

db.employee.find(
  {
    name: "Employee1"
  }, {
    distributionList: {
        $elemMatch: {
            dlname: "financeall"
        }
    },
    csrActivity: {
        $elemMatch: {
            activityname: "tree plantation"
        }
    }
  }
)