gpt4 book ai didi

arrays - 在MongoDB中将多个文档转换为一个文档

转载 作者:行者123 更新时间:2023-12-05 04:56:52 24 4
gpt4 key购买 nike

文档 1:

{
_id: abcdef,
name: "foo",
time: [1234],
doc: [1234]
}

文档 2:

{
_id: alexa,
name: "alexa",
time: [1234],
doc: [1234]
}

预期输出:

{
time[1234],
alexa[1234],
foo[1234]
}

我在 MongoDB 中有多个文档,我想将这些文档合并为一个文档。

Playground将多个文档合并为一个。

最佳答案

你可以试试,

  • $addFieldsroot 字段中使用 $arrayToObject 将名称和文档转换为对象
  • $group 使用 $mergeObjects
  • 在根目录中混合和合并对象
  • $addFields 使用 $reduce$setUnion
  • 从数组的数组中获取联合时间
  • $replaceRoot 使用 $mergeObjects
  • 替换根字段和时间字段中的合并对象
db.collection.aggregate([
{
$addFields: {
root: {
$arrayToObject: [[{ k: "$name", v: "$doc" }]]
}
}
},
{
$group: {
_id: null,
root: { $mergeObjects: "$root" },
time: { $push: "$time" }
}
},
{
$addFields: {
time: {
$reduce: {
input: "$time",
initialValue: [],
in: { $setUnion: ["$$this", "$$value"] }
}
}
}
},
{
$replaceRoot: {
newRoot: {
$mergeObjects: ["$root", { time: "$time" }]
}
}
}
])

Playground

关于arrays - 在MongoDB中将多个文档转换为一个文档,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64750797/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com