MongoDB聚合:如何提取结果中的字段

MongoDB aggregation: How to extract the field in the results

本文关键字:结果 字段 提取 聚合 何提取 MongoDB      更新时间:2023-09-26

all!

我是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,我能做些什么吗?任何帮助都将不胜感激!

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

因此,聚合框架本身永远不会产生一个只包含您想要的值的裸数组。但你总是可以转换结果的数组,因为毕竟它只是一个数组

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

还要注意,shell中的默认行为和首选选项是,聚合结果实际上是作为MongoDB 2.6及以后版本的游标返回的。由于这是以列表形式而不是作为一个不同的文档,您将以不同的方式处理:

var response = db.collection.aggregate(pipeline).map(function(x) {
    return x._id;
})
相关文章: