我在数据库中有这个集合,它包含很多文档,我希望所有“Æ”实例都替换为“ae”。
我的文件如下:
{
"_id" : ObjectId("57071e9fee31902f0a9ad989"),
"layout" : "normal",
"name" : "Æther Flash",
"manaCost" : "{2}{R}{R}",
"cmc" : 4,
"colors" : [ "Red" ]
}
我想我应该使用像find_one_and_update这样的东西,也许?
答案 0 :(得分:3)
这应该有效。这可能需要一段时间,具体取决于你的db有多大,考虑到它的MTG数据库可能很大;)但它应该可以工作。
db.getCollection('AllCards').find({$or: [{name: {$regex: 'Æ'}}, {name: {$regex: 'æ'}}]}).forEach(function (x) {
x.name = x.name.replace(/Æ/g, 'Ae').replace(/æ/g, 'ae');
db.getCollection('AllCards').save(x);
});
当然,这只涵盖了名字中的Æs。但我想你可以理清如何使它适用于所有必要的领域。