我使用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
答案 0 :(得分:3)
您可以在find
的投影参数中使用点表示法来执行此操作。在shell中:
db.test.find(
{_id : ObjectId("5207fe359b88bfa6f90a82b0")},
{'members.5207fe359b88bfa6f90a82af': 1, _id: 0})
返回:
{
"members": {
"5207fe359b88bfa6f90a82af": [
"Admin",
"User"
]
}
}