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

如何从Mongoose findOne查询结果中提取嵌套的categories数组

解决方案

方案1:使用聚合管道直接查询得到目标数组

你可以通过MongoDB的聚合框架在查询阶段就直接提取到你需要的内层categories数组,不需要后续手动处理,代码如下:

const result = await Categories.aggregate([
  // 匹配外层slug等于_gender的文档
  { $match: { slug: _gender } },
  // 拆分外层categories数组
  { $unwind: "$categories" },
  // 匹配categories下slug等于_mainCategory的元素
  { $match: { "categories.slug": _mainCategory } },
  // 直接返回内层的categories数组为最终结果
  { $replaceRoot: { newRoot: "$categories.categories" } }
])
// 最终你需要的数组就是 result

方案2:对现有查询结果直接提取

如果你不想改动现有查询逻辑,直接对返回结果做一层取值即可:

const queryResult = await Categories.findOne({slug : _gender} , { _id : 0 , categories :{$elemMatch :  {slug : _mainCategory}}})
// 直接提取目标数组
const targetCategories = queryResult?.categories?.[0]?.categories

内容的提问来源于stack exchange,提问作者murat.karaca

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.25 08:15:02