查询mongodb中子文档的值

时间:2013-08-11 21:59:48

标签: mongodb mongodb-query mongodb-java

我使用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

1 个答案:

答案 0 :(得分:3)

您可以在find的投影参数中使用点表示法来执行此操作。在shell中:

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

返回:

{
  "members": {
    "5207fe359b88bfa6f90a82af": [
      "Admin",
      "User"
    ]
  }
}