我正在将 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 - 按子树查询
您可以在
find
的投影参数中使用点表示法来执行此操作。在外壳中:
db.test.find(
{_id : ObjectId("5207fe359b88bfa6f90a82b0")},
{'members.5207fe359b88bfa6f90a82af': 1, _id: 0})
退货:
{
"members": {
"5207fe359b88bfa6f90a82af": [
"Admin",
"User"
]
}
}