从mongoDB获取特定密钥的所有值

时间:2016-10-31 07:47:51

标签: mongodb python-2.7

我在mongoDb中有一个文件,格式如下所示,我只想打印标签键的值。我尝试了几种方法,但没有一种方法可以使用

{
id = "my_id1"
   tags: 
        {
         'tag1':76, 
         'tag2':77, 
         'tag3':78
        },
   category: "movie",
},
{
   id = "my_id2"
   tags: 
        {
         'tag1':76, 
         'tag2':77, 
         'tag3':78
        },
   category: "tv",
},
{
   id = "my_id3"
   tags: 
        {
         'tag1':76, 
         'tag2':77, 
         'tag3':78
        },
   category: "movie",
}

所需的输出格式如下所示

76
77
78
76
77
78
76
77
78

我正在尝试的代码也将返回给我所有其他值。

1 个答案:

答案 0 :(得分:1)

如果您的架构如下

{
        "_id" : ObjectId("581707cddb3c8c85a6745d20"),
        "id" : "my_id1",
        "tags" : {
                "tag1" : 76,
                "tag2" : 77,
                "tag3" : 78
        },
        "category" : "movie"
}
{
        "_id" : ObjectId("581707f7db3c8c85a6745d21"),
        "id" : "my_id2",
        "tags" : {
                "tag1" : 76,
                "tag2" : 77,
                "tag3" : 78
        },
        "category" : "tv"
}
{
        "_id" : ObjectId("58170a23db3c8c85a6745d22"),
        "id" : "my_id3",
        "tags" : {
                "tag1" : 76,
                "tag2" : 77,
                "tag3" : 78
        },
        "category" : "movie"
}

db.collection.find().count() ---> 3

然后可以使用以下查询

检索标签值
db.collection.aggregate([{$project:{"_id":false,"tags.tag1":1, "tags.tag2":1, "tags.tag3":1}}])

此查询将产生如下所示的结果

{ "tags" : { "tag1" : 76, "tag2" : 77, "tag3" : 78 } }
{ "tags" : { "tag1" : 76, "tag2" : 77, "tag3" : 78 } }
{ "tags" : { "tag1" : 76, "tag2" : 77, "tag3" : 78 } }

如果我用来获得此结果的架构与您的架构不匹配,那么您需要修改查询以适合您的架构。