如何使用MongoDB从下面给定的JSON文档中单独显示'c'数组值?

时间:2015-07-30 22:42:03

标签: json mongodb mongodb-query mongodb-java

我是MongoDB的新手。我正在尝试从集合中的文档中提取字段的各种方法。 在下面的JSON文档中,我发现很难根据我的需要提取它

{  
   "_id":1,
   "dependencies":{  
      "a":[  
         "hello",
         "hi"
      ],
      "b":[  
         "Hmmm"
      ],
      "c":[  
         "Vanilla",
         "Strawberry",
         "Pista"
        ],
      "d":[  
         "Carrot",
         "Cauliflower",
         "Potato",
         "Cabbage"
      ]
   },
   "productid":"25",
   "date":"Thu Jul 30 11:36:49 PDT 2015"
}

我需要显示以下输出:

c:[  
         "Vanilla",
         "Strawberry",
         "Pista"
    ]

任何人都可以帮我解决一下吗?

1 个答案:

答案 0 :(得分:1)

MongoDB Aggregation进行救援以获得您正在寻找的结果:

$Project - >将仅包含指定字段的文档传递到管道中的下一个阶段。指定的字段可以是输入文档或新计算字段中的现有字段。

db.collection.aggregate( [
                   { $project : 
                      { c: "$dependencies.c", _id : 0 } 
                   }
              ]).pretty();

根据您需要的输出,我们只需要投影(显示)字段" dependencies.c" ,所以我们正在创造一个新的领域" c"并指定" dependencies.c"的价值。进入它。

同样通过defalut" _id"字段将随结果一起显示,因为你不需要它,所以我们通过指定" _id"来抑制_id字段。 :< 0或false>,以便它不会在输出中显示_id字段。

以上查询将获取结果如下:

     "c" : [ 
             "Vanilla",
             "Strawberry", 
             "Pista" 
           ]