mongodb - 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"}}}
)
任何帮助将不胜感激
解决方案
您只是拼错了投影运算符$elemMatch
正确的查询是:
db.employee.find(
{
name: "Employee1"
}, {
distributionList: {
$elemMatch: {
dlname: "financeall"
}
},
csrActivity: {
$elemMatch: {
activityname: "tree plantation"
}
}
}
)
推荐阅读
- html - 实数计数器
- c# - C# .NET core 获取当前用户 ID 的最佳方式
- php - 在 Drupal 8 中创建新模块时出错
- c++ - C++ 回溯不打印函数等文件
- apache - 在 URL 中用 .htaccess 替换字符串
- html - 里面的图标在焦点上
- docker - docker端口映射不转发流量
- c - 如何在一个项目中同时使用一个库和同一个库的修改版本?
- spring - java.lang.ClassNotFoundException: org.hibernate.bytecode.instrumentation.internal.FieldInterceptionHelper Java Spring 异常
- java - new String[]{"0"} 是什么意思?