在MongoDB我有用戶集合。在那里我有這樣的檔案:
{
_id: ObjectId("619365c54a7d53716438933e"),
name: 'Chris',
hobbies: [
{ title: 'Sports', frequency: 5 },
{ title: 'Cooking', fequency: 5 },
{ title: 'Hiking', frequency: 1 }
],
isSporty: true,
cookMaster: true,
age: 35 }
所以,它在愛好上有陣列值,在插入程序中我犯了一個錯誤。當我插入愛好烹飪時,我添加了關鍵頻率而不是頻率。現在我想解決這個問題。在 Mong 中存在諸如$rename. 我試過:
db.users.updateMany({name:"Chris"}, {$rename: {"hobbies.fequency": "frequency"}})
但出錯了。我如何才能正確地豐富和更改此密鑰?
uj5u.com熱心網友回復:
只需使用 a$set進行更新即可使用更正欄位名稱$map。
db.collection.update({},
[
{
"$set": {
"hobbies": {
"$map": {
"input": "$hobbies",
"as": "h",
"in": {
title: "$$h.title",
frequency: {
"$ifNull": [
"$$h.frequency",
"$$h.fequency"
]
}
}
}
}
}
}
])
這是Mongo 游樂場供您參考。
uj5u.com熱心網友回復:
$set-$maphobbies陣列欄位,$mergeObject用于添加新欄位frequency。$unset-用于洗掉欄位fequency在hobbies陣列欄位。
db.collection.update({
name: "Chris"
},
[
{
$set: {
"hobbies": {
$map: {
input: "$hobbies",
in: {
$mergeObjects: [
"$$this",
{
frequency: "$$this.fequency"
}
]
}
}
}
}
},
{
$unset: "hobbies.fequency"
}
])
示例 Mongo Playground
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/359655.html
