2014-09-03 91 views
0

all!MongoDB聚合:如何在结果中提取字段

我是新来的MongoDB聚合,聚合后,我终于得到了结果:

"result" : [ 
    { 
     "_id" : "531d84734031c76f06b853f0" 
    }, 
    { 
     "_id" : "5316739f4031c76f06b85399" 
    }, 
    { 
     "_id" : "53171a7f4031c76f06b853e5" 
    }, 
    { 
     "_id" : "531687024031c76f06b853db" 
    }, 
    { 
     "_id" : "5321135cf5fcb31a051e911a" 
    }, 
    { 
     "_id" : "5315b2564031c76f06b8538f" 
    } 
], 
"ok" : 1 

的数据正是我要找的,但我只想让一步,我希望我的数据将显示如下:

"result" : [ 
    "531d84734031c76f06b853f0", 
    "5316739f4031c76f06b85399", 
    "53171a7f4031c76f06b853e5", 
    "531687024031c76f06b853db", 
    "5321135cf5fcb31a051e911a", 
    "5315b2564031c76f06b8538f" 
], 
"ok" : 1 

是的,我只想让所有的唯一的ID在一个普通的字符串数组,有什么我可以做什么?任何帮助,将不胜感激!

+0

显示您的查询 – 2014-09-03 09:36:36

回答

2

所有MongoDB查询都会在结果文档中生成“键/值”对。所有的MongoDB内容基本上都是这种形式的BSON文档,只是由驱动程序将其翻译成本地代码形式,以其实现的语言。

因此,单独的聚合框架永远不会产生裸露的只要你想要的值的数组。但是,你永远可以改变结果的阵列,因为毕竟它只是一个数组

var result = db.collection.aggregate(pipeline); 

var response = result.result.map(function(x) { return x._id }); 

还要注意的是,在外壳和最佳选项的默认行为是聚合的结果实际上是返回游标从MongoDB 2.6开始。由于这是列表形式,而不是作为一个明确的文档,您将以不同的方式处理:

var response = db.collection.aggregate(pipeline).map(function(x) { 
    return x._id; 
}) 
+0

谢谢,尼尔!我现在清楚这个机制,它解决了我的问题,真的很感激! – crystaldust 2014-09-11 08:28:23