获取MongoDB中

时间:2017-01-02 08:10:31

标签: arrays mongodb mongodb-query

我有一些条目:

{ "name":"a", "value":10 }
{ "name":"b", "value":20 }
{ "name":"c", "value":10 }
...

我可以使用db.collection.find({"value":10},{"name":1, _id: false})从查询中选择名称。它给了我以下内容:

{ "name" : "a" }
{ "name" : "c" }
...

但是,我希望它返回一个值数组,而不是一组{key:value}对。 (如[ "a", "c", ... ])。有没有办法只使用MongoDB查询来实现这一点,还是应该选择并将它们放在我的应用程序中的数组中?

当前输出:

{ "name" : "a" }
{ "name" : "c" }
...

预期产出:

["a", "c", ...]

如果以上不是可能的输出,也可能是

{ "result": ["a", "c", ...] }

1 个答案:

答案 0 :(得分:2)

db.collection.distinct( "name", { "value": 10 })
@Sagar Reddy 评论

将返回设置数组

["a", "c"]

这可能就是你所需要的。 Aniway,使用aggregation可以实现类似的更复杂的查询,您可以使用额外的聚合阶段。

db.collection.aggregate([
    { $match: { value: 10 }},
    { $group: { _id: null, result: { $addToSet: '$name' }}}, 
    { $project: { _id: 0, result: 1 }}
])

group阶段,如果您希望多次显示相同的值,addToSet可以替换为push

使用addToSet输出:

{ "result" : [ "c", "a" ] }

使用push输出Ex:

{ "result" : [ "a", "c", "c" ] }