我陷入了一個問題:
我需要改造:
[ {a:1 , b:2 , c:3} , {a:5, b:6, c:7} ]
進入:
[{a:[1,5], b:[2,6] , c: [3,7]}]
只需查找公共鍵并將其分組即可。
我不確定是否應該使用 $project $reduce 或 $group。有人有提示嗎?
uj5u.com熱心網友回復:
為此,我們應該首先將物件更改為陣列,以便能夠按鍵進行分組。你可以在這里查看。
{
"$project": {
"_id": 0 // First we have to eliminate the _id and all the other fields that we dont want to group
}
},
{
"$project": {
"arr": {
"$objectToArray": "$$ROOT"
}
}
},
然后我們可以展開這個陣列并對鍵進行分組。
{
"$unwind": "$arr"
},
{
"$group": {
"_id": "$arr.k",
"field": {
"$push": "$arr.v"
}
}
}
最后,我們使用所需的輸出重新映射資訊。
{
$replaceRoot: {
newRoot: {
$arrayToObject: [
[
{
k: "$_id",
v: "$field"
}
]
]
}
}
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/371137.html
