我有一个 MongoDB 集合,其中包含一些文档,其中有一个名为 Personal.FirstName 的字段和另一个名为 Personal.Surname 的字段。有些文件很困惑,两个字段中都有人的名字和姓氏。例如,有些文档的 Personal.FirstName = 'John Doe' 和 Personal.Surname = 'John Doe'。
我想编写一个 mongo 更新语句来执行以下操作:
- 查找所有包含“个人”部分的文档
- 查找 Personal.FirstName == Personal.Surname 的所有文档
- 将 Personal.FirstName 更新为 Personal.FirstName 空格之前的第一部分
- 将 Personal.Surname 更新为 Personal.Surname 空格后的第二部分
这在 mongo 更新语句中可能吗?我是 mongo 的新手,对如何查询它知之甚少。
编辑:这是一个示例文档
{
"_id" : LUUID("fcd140b1-ec0f-0c49-aa79-fed00899290e"),
"Personal" : {
"FirstName" : "John Doe",
"Surname" : "John Doe"
}
}
最佳答案
您无法在单个查询中执行此操作,但您可以通过迭代结果来实现此目的,如下所示:
db.name.find({$and: [{Personal: {$exists: true}}, {$where: "this.Personal.FirstName == this.Personal.Surname"}]}).forEach(function(e,i){
var parts = e.Personal.FirstName.split(" ");
e.Personal.FirstName = parts[0];
e.Personal.Surname = parts[1];
db.name.save(e);
})
结果:
{ "_id" : "fcd140b1-ec0f-0c49-aa79-fed00899290e", "Personal" : { "FirstName" : "John", "Surname" : "Doe" } }
关于mongodb - 如何更新 mongodb 中的字符串字段并操作字符串值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41682122/