首页 > 解决方案 > 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 建议的那样。这个查询是正确的。但我有一个架构错误。改正后,一切正常。

标签: javascriptmongodbmeteor

解决方案


您可以使用 $in 运算符 https://docs.mongodb.com/manual/reference/operator/query/in/

db.collection.find({
  "projects.projectName": "project1",
  "projects.employees": {$in: ["employee1"]}
})

推荐阅读