MongoDB 相当于 Python 的 enumerate()

时间:2021-04-26 18:58:55

标签: mongodb

我正在寻找 MongoDB 聚合来替换数组

['a', 'b', 'c']

类似的东西

[ {"i":1,"element":"a"}, {"i":2,"element":"b"}, {"i":3,"element":"c"} ]

谢谢

1 个答案:

答案 0 :(得分:0)

  • $map 使用 lyrics
  • 迭代范围从 0 到 $range 数组长度的循环
  • $add 在当前索引中加 1,因为范围从 0 开始
  • $arrayElemAtlyrics 数组中获取特定元素
db.collection.aggregate([
  {
    $set: {
      lyrics: {
        $map: {
          input: { $range: [0, { $size: "$lyrics" }] },
          in: {
            i: { $add: ["$$this", 1] },
            element: { $arrayElemAt: ["$lyrics", "$$this"] }
          }
        }
      }
    }
  }
])

Playground