mongodb - MongoDB:重命名集合中的字段(文档和子文档)
问题描述
使用 MongoDB 3.6,我的文档结构如下 `
{
"_id" : ObjectId("5d88"),
"Equipments" : [
{
"InnerEquipments" : {
"AssetId" : 678
},
"AssetID" : 456
}
],
"AssetID" : 123
}
我想在所有级别将字段从 AssetID/AssetId 重命名为 Asset_ID。我怎么能用 mongo shell 做到这一点。
解决方案
你需要为此编写一个脚本。
我还没有测试过。相应地进行更改。
db.collection.find({}).forEach(function(doc) {
if(doc['AssetID']) {
doc['Asset_ID'] = doc['AssetID'];
delete doc['AssetID'];
} else if (doc['AssetId']) {
doc['Asset_ID'] = doc['AssetId'];
delete doc['AssetId']
}
if(doc.Equipments && doc.Equipments.length) {
doc.Equipments.forEach(function(rec) {
if(rec['AssetID']) {
rec['Asset_ID'] = rec['AssetID'];
delete rec['AssetID'];
} else if (rec['AssetId']) {
rec['Asset_ID'] = rec['AssetId'];
delete rec['AssetId']
}
if(rec['InnerEquipments']['AssetID']) {
rec['InnerEquipments']['Asset_ID'] = rec['InnerEquipments']['AssetID'];
delete rec['InnerEquipments']['AssetID'];
} else if (rec['InnerEquipments']['AssetId']) {
rec['InnerEquipments']['Asset_ID'] = rec['InnerEquipments']['AssetId'];
delete rec['InnerEquipments']['AssetId']
}
})
}
db.collection.update({'_id':doc._id},doc);
});
推荐阅读
- c# - AES解密时出现异常
- python - 如何解决 python 说“WebDriverException:: unknown error: cannot determine loading status from no such execution context?”的问题?
- javascript - 如何获得“未触及”的窗口对象?
- zabbix - 如何在 zabbix 中监控 Linux 卸载/删除的文件系统
- android - 如果它是由系统为 STICKY 创建的,有没有办法在服务的 onStartCommand 中识别它?
- python - 如何正确使用浮点数作为基类并为新类定义方法?
- php - PHP - 覆盖特征内的静态变量
- elasticsearch - 是否有任何接近 MongDB 投影的 Elasticsearch 操作?
- reactjs - React 中的 Highcharts 动态数据获取
- javascript - 如何用手风琴制作滑块?