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

MongoDB数组元素拼接问题:聚合操作返回null求解决

问题分析与解决方案

你的问题出在对$map的用法理解有误:$map是用来遍历数组的每个元素,此时$$u代表的是word数组里的单个元素(比如第一个元素是字符串"1501143005"),所以$$u.0这种写法自然会返回null——因为字符串并没有名为0的属性。

而你的需求是取数组固定索引位置的元素进行拼接,完全不需要用到$map,直接在$project阶段通过数组索引访问元素即可:

db.getCollection('buffer2').aggregate([
  {
    $project: {
      newId: { $concat: [ "$word.0", "-", "$word.2" ] },
      oldId: { $concat: [ "$word.3", "-", "$word.2" ] }
    }
  }
]);

代码解释

  • $word.0:直接访问word数组的第1个元素(MongoDB数组索引从0开始)
  • $concat:将指定的字符串元素拼接成一个新字符串
  • 不需要保留原word数组的话,这个$project会自动排除原字段(除非显式指定保留)

执行这个聚合语句后,就能得到你期望的结果:

{ "_id" : ObjectId("5af9a044db06595c4a3c60d3"), "newId" : "1501143005-4100", "oldId" : "7493-4100"}

内容的提问来源于stack exchange,提问作者Андрей Кузьменко

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.27 09:40:21