我有這個物件:
{
"_id":"1",
"a":"b",
"b":"wanted value"
},
{
"_id":"2",
"a":"c",
"c":"wanted value 2"
}
我怎樣才能獲得 a 的價值并使它成為我計劃獲得“想要的價值”/“想要的價值 2”的財產?
想要的輸出:
{
"_id":"1",
"b":"wanted value"
},
{
"_id":"2",
"c":"wanted value 2"
}
uj5u.com熱心網友回復:
使用$objectToArray到根檔案轉換成元組KV的陣列,然后使用$reduce以處理該陣列。
db.collection.aggregate([
{
"$addFields": {
"arr": {
"$objectToArray": "$$ROOT"
}
}
},
{
"$addFields": {
// store value of field "a" into "v"
"v": {
"$reduce": {
"input": "$arr",
"initialValue": null,
"in": {
"$cond": {
"if": {
$eq: [
"$$this.k",
"a"
]
},
"then": "$$this.v",
"else": "$$value"
}
}
}
}
}
},
{
"$addFields": {
"result": {
"$reduce": {
"input": "$arr",
"initialValue": null,
"in": {
"$cond": {
"if": {
// find from k-v tuples where the field name is same as value in previously deduced "v" field
$eq: [
"$$this.k",
"$v"
]
},
"then": "$$this.v",
"else": "$$value"
}
}
}
}
}
},
{
"$project": {
// some cosmetics
arr: false,
v: false
}
}
])
這是Mongo 游樂場供您參考。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/366764.html
