将不同数组中的int和字符串数组字段进行合并


{ 
"no" : "2020921008981",  
"date" : ISODate("2020-04-01T05:19:02.263+0000"), 
"sale" : { 
"soldItems" : [
{
"itemId" : "5b55ac7f0550de00210a3b24", 
"qty" : NumberInt(1), 
},
{
"itemId" : "5b55ac7f0550de00210a3b25", 
"qty" : NumberInt(2), 
}
],
"items" : [
{
"_id" : ObjectId("5b55ac7f0550de00210a3b24"),
unit :"KG"
},
{
"_id" : ObjectId("5b55ac7f0550de00210a3b25"),
unit :"ML"
}
]
}
}

期望输出:

{
"no" : "2020921008981",
"sale" : {}
"qtyList" : "1 KG n 2 ML"
}

为了构建itemQtyList输出字段,应该使用来自不同数组的两个字段(string和int(。找不到任何这样做的参考。任何想法都将不胜感激。

您可以使用以下聚合

db.collection.aggregate([
{ "$project": {
"itemQtyList": {
"$reduce": {
"input": { "$range": [0, { "$size": "$sale.soldItems" }] },
"initialValue": "",
"in": {
"$concat": [
"$$value",
{ "$cond": [{ "$eq": ["$$this", 0] }, "", " n "] },
{ "$toString": {
"$arrayElemAt": [
"$sale.soldItems.qty",
"$$this"
]
}},
" ",
{ "$arrayElemAt": ["$sale.items.unit", "$$this"] }
]
}
}
}
}}
])

MongoPlayground

最新更新