1

我正在使用看起来像这样的文档的 Java 驱动程序(一个真实的测试示例):

{
    "_id" : ObjectId("5207fe359b88bfa6f90a82b0"),
    "meta_id" : "d6eb1b13-50c7-473f-8348-b5a638a542a0",
    "name" : "Fake Name Inc.",
    "created" : ISODate("2013-08-11T21:12:21.533Z"),
    "members" : {
        "5207fe359b88bfa6f90a82af" : [
            "Admin",
            "User"
        ]
    }
}

我想在路径“ members.5207fe359b88bfa6f90a82af ”(这是角色列表)处选择字符串数组。我不知道该怎么做。看起来投影在这里可以工作,但我对 Mongo 来说还很新,所以投影的编写方式并不明显。

我当然可以加载整个对象,甚至可能只是“成员”字段,但我认为我应该能够准确地选择我想要的数据。

那么,有没有人知道如何编写这样的查询?

注意:这个问题表明,也许我需要更改文档的结构以使事情变得更容易:MongoDB - Query by sub-tree

4

1 回答 1

3

您可以在投影参数中使用点符号find来执行此操作。在外壳中:

db.test.find(
    {_id : ObjectId("5207fe359b88bfa6f90a82b0")},
    {'members.5207fe359b88bfa6f90a82af': 1, _id: 0})

回报:

{
  "members": {
    "5207fe359b88bfa6f90a82af": [
      "Admin",
      "User"
    ]
  }
}
于 2013-08-11T22:59:44.743 回答