【问题标题】:mongodb query for object properties inside array inside of an objectmongodb查询对象内部数组中的对象属性
【发布时间】:2021-11-14 09:46:21
【问题描述】:

数据结构:

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"
})

但是没有用。

编辑:正如 J.F. 建议的那样。这个查询是正确的。但我有一个架构错误。改正后一切正常。

【问题讨论】:

  • this 你在找什么?
  • 有点是的,我已经尝试过了,但对我来说,这个查询没有返回任何东西。也许是因为 Meteor Collections?
  • 哦,伙计..我发现了问题...这是由于架构错误,您的解决方案是正确的

标签: javascript mongodb meteor


【解决方案1】:

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-01-22
    • 2021-09-24
    • 1970-01-01
    • 2020-05-22
    • 1970-01-01
    • 2020-03-14
    相关资源
    最近更新 更多