phi*_*hil 2 dictionary rename mongodb
我想重命名在mongodb中重命名我的dict密钥.
通常它就是这样的 db.update({'_id':id},{$rename:{'oldfieldname':newfieldname}})
我的文档结构看起来像那样
{
'data':'.....',
'field':{'1':{'data':....},'2':{'data'...}},
'more_data':'....',
}
Run Code Online (Sandbox Code Playgroud)
如果我想在字段1中设置一个新字段,我会这样做 db.update({'_id':id},{$set:{'field.0.1.name':'peter'}})
对于第二场,它是'field'.1.2.name'
我认为重命名它应该是相似的,但它不是......(比如 $rename:{'field'.0.1': 2}
这是一种在数据库中重命名密钥的灵活方法
鉴于这样的文档结构......
{
"_id": ObjectId("4ee5e9079b14f74ef14ddd2f"),
"code": "130.4",
"description": "4'' Socket Plug",
"technicalData": {
"Drawing No": "50",
"length": "200mm",
"diameter: "20mm"
},
}
Run Code Online (Sandbox Code Playgroud)
我想遍历所有文档并将technicalData ["Drawing No"]重命名为technicalData ["Drawing Number"]
在(优秀的)RockMongo的执行面板中运行以下javascript
function remap(x){
dNo = x.technicalData["Drawing No"];
db.products.update({"_id":x._id}, {
$set: {"technicalData.Drawing Number" : dNo},
$unset: {"technicalData.Drawing No":1}
});
}
db.products.find({"technicalData.Drawing No":{$ne:null}}).forEach(remap);
Run Code Online (Sandbox Code Playgroud)
代码也将在mongo shell中运行