为简单起见,我在下面有一个简化的收集结构。我无法查询配置文件字段下的特定子文档。
例如,我想找到子文档“profiles.Bernie”。是否有find()查询允许我只检索Bernie的文档(即Bernie的类别和id)?如果这是重复的道歉,但我无法找到满足下面这个集合的方式的解决方案
{
"_id" : ObjectId("56aec822ceb6e9dc23d32271"),
"sm_user" : "user1",
"profiles" : {
"Bernie" : {
"category" : "Politics",
"id" : "bernie"
},
"Hilary" : {
"category" : "Politics",
"id" : "hilary"
}
}
}
答案 0 :(得分:1)
是的,您可以选择仅获取Bernie
子树并取消通常包含的_id
;
db.test.find({},{ _id:0, "profiles.Bernie":1 })
此将包含导致Bernie
(又称profiles
标记)的结构,但仅包含该子树中的数据。
如果您不希望保留结构,您还可以使用聚合框架将Bernie
投影到输出文档的根目录;
db.test.aggregate([{$project: { _id:0, 'Bernie': "$profiles.Bernie"}}])