【发布时间】:2020-09-03 09:41:26
【问题描述】:
我有一个包含这样数据的集合:
[{
_id: 1,
address: '1/23 Fake Street'
},
{
_id: 2,
address: '5/20 Whatever Lane'
},
{
_id: 3,
address: '10 Foo Avenue'
}]
我想执行 Mongo 批量更新查询,它执行以下操作:
- 将
address字段转换为小写 - 创建一个新字段“buildingAddress”,它在斜杠处拆分地址(如果存在,与前两项一样)并使用其后面的文本填充新字段
在 Node 中,我会这样做:
const cursor = db.items.find({});
for await (const item of cursor) {
try {
await pageMapper(item);
} catch (e) {
console.error(e);
}
}
async function pageMapper(item){
const newAddress = item.address.toLowerCase()
const buildingAddress = newAddress.split('/ ')[1];
return db.items.updateOne(item._id, {
$set: {
address: newAddress,
buildingAddress
}
})
}
我想知道是否有办法在 MongoDB shell 本身中执行此操作,将函数传递给 db.collection.update?还是我应该坚持使用节点驱动来进行更复杂的更新操作?
【问题讨论】:
-
可以在mongo shell中运行js脚本docs.mongodb.com/manual/tutorial/…stackoverflow.com/questions/20174720/…
标签: mongodb