我正在使用 MongoDB 6.0 和 mongosh 1.5。我有一個集合,其中包含具有以下結構的元素:
{
"name": "Optimization using NN",
"calculations": {
"1": {
"code": "A123",
"purpose": "TIME",
"cities": {
"PARIS": {
"load": 50,
"price": 10.45
},
"ROME": {
"load": 100,
"price": 8.25
},
"LYON": {
"load": 40,
"price": 9.00
}
}
},
"2": {
"code": "B123",
"purpose": "COST",
"cities": {
"PARIS": {
"load": 150,
"price": 9.45
},
"ROME": {
"load": 40,
"price": 7.25
},
"LYON": {
"load": 30,
"price": 8.00
}
}
}
}
}
我需要為每個計算添加欄位,這并不難:
db.experiment.updateMany({},
[{
$set: {
'calculations': {
$objectToArray: '$calculations'
}
}
}, {
$addFields: {
'calculations.v.active': {
$literal: true
}
}
}, {
$set: {
'calculations': {
$arrayToObject: '$calculations'
}
}
}
])
有沒有辦法向所有城市添加具有空物件值的欄位“約束”?
{
"name": "Optimization using NN",
"calculations": {
"1": {
"code": "A123",
"purpose": "TIME",
"cities": {
"PARIS": {
"load": 50,
"price": 10.45,
"constraints" : {}
},
"ROME": {
"load": 100,
"price": 8.25,
"constraints" : {}
},
"LYON": {
"load": 40,
"price": 9.00,
"constraints" : {}
}
},
"active" : true
},
"2": {
"code": "B123",
"purpose": "COST",
"cities": {
"PARIS": {
"load": 150,
"price": 9.45,
"constraints" : {}
},
"ROME": {
"load": 40,
"price": 7.25,
"constraints" : {}
},
"LYON": {
"load": 30,
"price": 8.00,
"constraints" : {}
}
},
"active" : true
}
}
}
我不能在 '$calculations.v.cities' 上再次使用 $objectToArray,因為它已經是一個陣列。
uj5u.com熱心網友回復:
詢問
- 你也有嵌套方式的鍵中的資料,所以這里需要 $ObjectToArray 并回傳陣列,需要以嵌套方式
- 這會產生預期的結果,添加
active : true所有計算,并添加constraints : {}到所有城市
*也許查詢可能更小,但通常在架構中包含資料的查詢復雜且緩慢,我建議更改您的架構
玩蒙哥
aggregate(
[{"$set":
{"calculations":
{"$map":
{"input": {"$objectToArray": "$calculations"},
"as": "outer",
"in":
{"k": "$$outer.k",
"v":
{"$mergeObjects":
[{"active": true}, "$$outer.v",
{"cities":
{"$arrayToObject":
[{"$map":
{"input": {"$objectToArray": "$$outer.v.cities"},
"as": "inner",
"in":
{"k": "$$inner.k",
"v":
{"$mergeObjects":
["$$inner.v", {"constraints": {}}]}}}}]}}]}}}}}},
{"$set": {"calculations": {"$arrayToObject": ["$calculations"]}}}])
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/487246.html
下一篇:Mongodb影像陣列更改模式
