gpt4 book ai didi

mongodb - 使用 mongodb 聚合中的数组更新对象数组

转载 作者:行者123 更新时间:2023-12-04 08:47:34 27 4
gpt4 key购买 nike

我的聚合中有以下情况:在某些时候,我的文档在根级别保存了一个对象数组和一个相同长度的数组。一个例子是:

{_id:0,
cars:[{name:"vw polo",door:3},{name:"vw golf",door:5}],
possible_colors:[["black","blue"],["white"]]}
我现在正在尝试的是将可能的颜色更新到汽车数组的每个对象中。预期结果应如下所示。
{_id:0,
cars:[{name:"vw polo",door:3,possible_colors:["black","blue"]},
{name:"vw golf",door:5,possible_colors:["white"]}],
}
我已经试过了 {$addfields:{cars:{$zip:[$cars,$possible_colors]}}} ,但这会创建一个数组列表,其中每个数组都包含对象和正确的子数组,但我无法合并它们。

最佳答案

$zip运算符是一个很好的方法,但是您需要额外的 $map连同 $mergeObjects为了获得所需的结构:

db.collection.aggregate([
{
$addFields: {
cars: {
$map: {
input: { $zip: { inputs: [ "$cars", "$possible_colors" ] } },
in: {
$mergeObjects: [
{ $arrayElemAt: [ "$$this", 0 ] },
{ possible_colors: { $arrayElemAt: [ "$$this", 1 ] } }
]
}
}
}
}
}
])
Mongo Playground

关于mongodb - 使用 mongodb 聚合中的数组更新对象数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64232644/

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