arrays - MongoDB:更新它存在的所有文档的字符串值
问题描述
collectionABC
/* 1 */
{
"DealerId" : "39823398",
"VehicleCategory" : [
{
"seqId" : "23987134983471982134HAD",
"vehicleName" : "BMW",
"vehicleImage" : "images/vehicle/270029.gif"
},
{
"seqId" : "293874KJHKHKJH7878",
"vehicleName" : "Audi",
"vehicleImage" : "images/vehicle/27022398.gif"
}
]
}
/* 2 */
{
"DealerId" : "3987398",
"VehicleCategory" : [
{
"seqId" : "2234423987134983471982134HAD",
"vehicleName" : "Honda",
"vehicleImage" : "images/vehicle/270029.gif"
},
{
"seqId" : "9834293874KJHKHKJH7878",
"vehicleName" : "Toyota",
"vehicleImage" : "images/vehicle/27022398.gif"
}
]
}
我有 100k 个具有上述模式的文档,并且需要将所有现有文档从“.gif”更新为“.png”。其余的一切都应该保持不变。
更新文档后,结果应如下所示:
collectionABC
/* 1 */
{
"DealerId" : "39823398",
"VehicleCategory" : [
{
"seqId" : "23987134983471982134HAD",
"vehicleName" : "BMW",
"vehicleImage" : "images/vehicle/270029.png"
},
{
"seqId" : "293874KJHKHKJH7878",
"vehicleName" : "Audi",
"vehicleImage" : "images/vehicle/27022398.png"
}
]
}
/* 2 */
{
"DealerId" : "3987398",
"VehicleCategory" : [
{
"seqId" : "2234423987134983471982134HAD",
"vehicleName" : "Honda",
"vehicleImage" : "images/vehicle/270029.png"
},
{
"seqId" : "9834293874KJHKHKJH7878",
"vehicleName" : "Toyota",
"vehicleImage" : "images/vehicle/27022398.png"
}
]
}
任何想法我们如何在 Mongo 中做到这一点?非常感谢。
解决方案
bulk_update = db.media.initializeUnorderedBulkOp()
db.media.find().forEach(function(e, i) {
e.VehicleCategory.forEach(function(vehicle, index){
vehicle.vehicleImage = vehicle.vehicleImage.replace('.gif','.png')
})
bulk_update.find({"DealerId": e.DealerId}).update({"$set": e})
})
bulk_update.execute()
如果有 100k 条记录,我建议根据您的 MongoDB 容量,使用一次选择 10k 的循环进行更新。
我是一个 python 人,对不起,如果没有使用正确的 JS。
推荐阅读
- c++ - 从继承层次结构中迭代对象容器,同时隐藏指针
- html - Auto size div and right aligned div in same div container
- c# - 启动类 IsInRole .net 核心
- mysql - SQL 查询 NOT IN 来自 3 个有条件的表
- ibm-cloud - 如何使用 Rest API 部署vyatta
- kibana - Kibana 可视化 - 自定义图例标签
- django - Django静态文件未加载除索引页面以外的所有页面
- android - 预期调用者确保有效 ABI:MIPS
- python - 在 Keras 相关模型中更改输入层大小
- sql - 如何针对通过 ID 链接但具有不同列名的 2 个视图运行 SQL 查询?