javascript - mongodb查询对象内部数组中的对象属性
问题描述
数据结构:
Document:
{
"projects": {
"projectName" : String,
"employees": [String]
}
}
现在我想找到一个文档,其中有一个名为“project1”的项目和一个员工“employee1”。
当我尝试仅通过嵌套项目对象中的一个属性进行查询时,似乎没有问题。但是只要我还想访问嵌套数组。查询开始失败。
db.documents.find({'projects': { $elemMatch: { name: "project1", $elemMatch: { employees: 'employee1' } } })
我使用流星集合,所以它看起来像这样:
Documents.findOne({'projects': { $elemMatch: { name: "project1", $elemMatch: { employees: 'employee1' } } })
我也尝试了这种简单的方法:
db.collection.find({
"projects.projectName": "project1",
"projects.employees": "employee1"
})
但它没有用。
编辑:正如 JF 建议的那样。这个查询是正确的。但我有一个架构错误。改正后,一切正常。
解决方案
您可以使用 $in 运算符 https://docs.mongodb.com/manual/reference/operator/query/in/
db.collection.find({
"projects.projectName": "project1",
"projects.employees": {$in: ["employee1"]}
})
推荐阅读
- ruby-on-rails - 在 ruby 葡萄 API 的参数中测试自定义验证器的存在
- qt - 无法创建路径为“*.qml”的组件
- php - 如何使用 sql 数据库在 php 中进行用户特定登录?
- angular - 如何将我的标签与角材料中的按钮对齐?
- mysql - 如何指定执行分组的顺序
- spring-jms - 带有任务执行器和断路器的 JMS 侦听器的 Spring 集成 Java DSL
- linux - bash中的双变量
- php - 必发 API PHP 代码不起作用....(没有任何响应)
- excel - 如何在excel中将时间转换为十进制?
- cmd - 从 zsh 暴露 cmd.exe