我有这些文件:

[ { id: 1 }, {id: 2}, {id: 3} ]

我想把它变成:

{ ids: [1, 2, 3] }

[1, 2, 3]

Which is the most efficient pipeline f或 that?

谢谢!

推荐答案

你可以使用$group$project Stage.

对于第一个结果—{ ids: [1, 2, 3] },请使用以下MongoDB聚合管道.

[
  {
    $group: {
      _id: null,
      ids: { $push: "$id" }
    }
  },
  {
    $project: {
      _id: 0,
      ids: 1
    }
  }
]

在上面的流水线中,你只需要使用$group级就可以得到想要的结果,但是有一个字段_id: null,所以你可以使用$project级来删除这个字段.

Mongodb相关问答推荐

如何在MongoDB中对两个数组进行分组?

为什么 mongoose 在 mongodb 中找不到我的数据

MongoDB - 将属性添加到数组中的对象(如果不存在)

Mongoose - $project 嵌套的对象数组到数组的根级别

Mongo查询子文档的多个字段

使用 ObjectId.GenerateNewId() 还是离开 MongoDB 创建一个?

mongodb,pymongo,aggregate聚合给出奇怪的输出

使用 MongoDB 更新数组字段内的特定键/值

将数据插入 MongoDB - 没有错误,没有插入

为什么不建议在 MongoDB 中使用服务器端存储函数?

MongoDB 存储 ObjectId 的数组

Node + Mongoose:获取最后插入的 ID?

docker 在不同的端口上运行 mongo 映像

Mongo Schema-less集合和 C#

查询不等于 null 或空的地方

mongo dbname --eval 'db.collection.find()' 不起作用

我在更新中对 $set 和 $inc 做错了什么

带有 either or查询的mongoose findOne

Meteor 发布/订阅独特客户端集合的策略

全局初始化失败:BadValue Invalid or no user locale set.请确保正确设置 LANG 和/或 LC_* 环境变量