在mongodb中通过点表示法查找子文档

时间:2016-02-15 16:43:57

标签: mongodb nested mongodb-query pymongo

为简单起见,我在下面有一个简化的收集结构。我无法查询配置文件字段下的特定子文档。

例如,我想找到子文档“profiles.Bernie”。是否有find()查询允许我只检索Bernie的文档(即Bernie的类别和id)?如果这是重复的道歉,但我无法找到满足下面这个集合的方式的解决方案

{
        "_id" : ObjectId("56aec822ceb6e9dc23d32271"),
        "sm_user" : "user1",
        "profiles" : {
                "Bernie" : {
                        "category" : "Politics",
                        "id" : "bernie"
                },
                "Hilary" : {
                        "category" : "Politics",
                        "id" : "hilary"
                }
        }
}

1 个答案:

答案 0 :(得分:1)

是的,您可以选择仅获取Bernie子树并取消通常包含的_id;

db.test.find({},{ _id:0, "profiles.Bernie":1 })

包含导致Bernie(又称profiles标记)的结构,但仅包含该子树中的数据。

如果您不希望保留结构,您还可以使用聚合框架将Bernie投影到输出文档的根目录;

db.test.aggregate([{$project: { _id:0, 'Bernie': "$profiles.Bernie"}}])