首页 > 解决方案 > Mongo Db:对多个数组进行 elemMatch 查询

问题描述

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

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

}

我想要属于财务分配列表的员工名单,并选择了志愿植树园企业社会责任活动。

预期结果集如下

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

但到目前为止能够从查询中实现以下输出

查询

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

输出

{ _id : 0,
   name : "Employee1",
   distributionList :[{dlname:"financeall"} ]
}

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

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

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

任何帮助将不胜感激

标签: mongodb

解决方案


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

正确的查询是:

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

推荐阅读