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

MongoDB查询使用别名返回双数组,如何调整得到预期返回结构

问题原因

你之前的查询结果不符合预期有两个核心问题:

  1. user是数组类型,直接使用$user.data_alias取值会返回由所有数组元素的data_alias字段组成的数组,而不是单个字符串值
  2. 投影参数没有指定返回name字段,所以结果中没有携带name值
  3. 注意你之前的聚合语句里集合名写成了colls,如果实际集合名是coll记得修正,避免查询报错

解决方案

如果你确定user数组永远只有1个元素,直接在聚合的投影阶段用$first提取数组的第一个值即可,正确查询语句如下:

db.coll.aggregate([
  {
    $match: {
      "id": "1"
    }
  },
  {
    $project: {
      "_id": 0,
      "name": 1,
      "data": { $first: "$user.data_alias" }
    }
  }
])

如果你的MongoDB版本低于4.4,不支持$first操作符,可以替换为$arrayElemAt实现相同效果:

"data": { $arrayElemAt: [ "$user.data_alias", 0 ] }

执行上述查询后就会得到你期望的返回结构:

{
    "data": "ex",
    "name": "sample"
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.30 00:36:04