You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何将MongoDB aggregate查询返回的_id对象转为ObjectId数组

方案1:直接对聚合游标使用map方法(最简洁)

原有查询逻辑不用改动,只需在聚合语句后追加.map()方法提取每个文档的_id字段即可,执行后直接返回你需要的ObjectId数组格式:

var $match = { isTask: { $ne: true }};
var $project = {_id: 1} ;
db.getCollection('foo').aggregate([{ $match }, {$project}]).map(doc => doc._id)

方案2:在聚合管道内完成分组聚合

如果希望完全通过MongoDB聚合管道实现结果格式化,可以新增$group阶段把所有_id合并为单个数组,最终取出结果即可:

var $match = { isTask: { $ne: true }};
db.getCollection('foo').aggregate([
  { $match },
  { $group: {
    _id: null,
    idList: { $push: "$_id" }
  }},
  { $project: { _id: 0 }}
]).next().idList

注意:如果查询结果集非常大,方案1更稳妥。因为方案2会把所有_id放入单个聚合返回文档,受MongoDB单文档最大16MB的大小限制。

内容的提问来源于stack exchange,提问作者CommonSenseCode

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.07 13:48:02