我有這個對象,我想更新集合中所有文檔的名稱字段「field」。我讀了mongodb文檔,它說$rename
在這種情況下不起作用。我應該執行一個foreach,但我不知道如何哪個命令使用如何更新嵌套在MongoDB數組中的名稱字段
{
"name": "foo"
"array": [
"object": {
"field": "name"
}
]
}
我有這個對象,我想更新集合中所有文檔的名稱字段「field」。我讀了mongodb文檔,它說$rename
在這種情況下不起作用。我應該執行一個foreach,但我不知道如何哪個命令使用如何更新嵌套在MongoDB數組中的名稱字段
{
"name": "foo"
"array": [
"object": {
"field": "name"
}
]
}
手工進行:
db.collection.find().forEach(function(doc) {
if (doc.array) {
doc.array.forEach(function(edoc) {
if (edoc.object) {
doc.object.new_field = edoc.object.field
delete edoc.object.field
}
})
db.test.update({ "_id" : doc._id }, doc)
}
})
這應該讓你開始。它處理丟失或空的array
數組,但不處理錯誤類型的值array
,或錯誤類型的object
值。
$用於更新行動命名修改應該工作(http://docs.mongodb.org/manual/reference/operator/update/rename/)
想像你們這樣一個集合:
{
"name": "foo",
"array":[
{"field": "name" }
]
}
你將能夠做到這樣的事情:
db.rename.update({},{$rename:{"name":"newName"}});
而doc ument將作如下安排: { 「了newName」: 「富」, 「數組」: { 「場」: 「名」} ] }
爲了更新所有收集你應該使用多選項,如下所示:
db.rename.update({},{$rename:{"name":"newName"}}, {multi:true})
問候