在 MongoDB 中的数组中连接数组

Concatenate arrays in an array in MongoDB

我目前在 MongoDB 中有一个字段,它是一个数组列表。我想将所有这些转换成一个字符串,但我首先需要(我猜?)在转换之前将我的数组列表连接成一个数组。

这是我的字段的样子:

"SitesList" : [
        [
            "553550", 
            "496573", 
            "496574"
        ], 
        [
            "553550", 
            "496573", 
            "496574"
        ], 
        [
            "527772", 
            "565085"
        ], 
        [
            "565085", 
            "563248"
        ], 
        [
            "496576"
        ]
    ]

这是我到目前为止尝试连接它的方法(使用 concatArrays),但它不起作用:

{ $addFields: {"Sites": { $concatArrays: ["$tdb.Data.site.list"]}}},

以及我最终想做的是将最终数组转换为字符串:

SitesList: {
                            $reduce: {
                                input: "$Sites",
                                initialValue: "",
                                in: {$concat: ["$$value",",",  {$toString:"$$this"}]}
                            }
                    },

有人可以帮助我吗? :) 提前致谢!

你可以试试,

  • $reduce 在单个数组中获取 concat 数组,其他 $reduce 使用 $concat$substr 将数组转换为字符串以从中删除多余的 ,字符串的开头,
db.collection.aggregate([
  {
    $addFields: {
      SitesList: {
        $substr: [
          {
            $reduce: {
              input: {
                $reduce: {
                  input: "$SitesList",
                  initialValue: [],
                  in: { $concatArrays: ["$$this", "$$value"] }
                }
              },
              initialValue: "",
              in: { $concat: ["$$value", ",", "$$this"] }
            }
          },
          1,
          -1
        ]
      }
    }
  }
])

Playground