查询mongodb中子文档的值

问题描述 投票:0回答: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 - 按子树查询

mongodb mongodb-query mongodb-java
1个回答
3
投票

您可以在

find
的投影参数中使用点表示法来执行此操作。在外壳中:

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

退货:

{
  "members": {
    "5207fe359b88bfa6f90a82af": [
      "Admin",
      "User"
    ]
  }
}
© www.soinside.com 2019 - 2024. All rights reserved.