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

MongoDB获取子文档数组时如何去除外层bills标签?

解决方法

方法一:直接提取目标数组

因为你是通过_id精确查询,查询结果只会包含单个文档,直接从返回结果中提取bills字段即可:

const queryResult = await record.find(
  { _id: new ObjectId(billId) },
  { projection: { _id: 0, bills: 1 } }
).toArray();
const billsList = queryResult.length ? queryResult[0].bills : [];

执行后billsList就是不含外层bills标签的目标数组。

方法二:使用聚合管道

如果需要更灵活的查询逻辑,也可以用MongoDB聚合管道处理,通过$replaceRoot直接将bills数组的元素作为结果文档:

const billsList = await record.aggregate([
  { $match: { _id: new ObjectId(billId) } },
  { $project: { _id: 0, bills: 1 } },
  { $replaceRoot: { newRoot: "$bills" } }
]).toArray();

这个管道会先匹配目标文档,投影出bills字段,再将bills数组中的每个元素作为独立结果返回,最终得到的格式与你期望的一致。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.15 11:55:10