mongodb - 如何更新 mongodb 中的字符串字段并操作字符串值?

标签 mongodb mongodb-query

我有一个 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/

相关文章:

node.js - mongoose findById 或 findone 不起作用

mongodb - 查找每天的最后一条记录

mongodb - NoSQL - MongoDB 与 CouchDB

java - mongodb如何在JAVA中将_id转换为String

java - 使用 Java 使用 morphia mongodb 查找地理空间

mongodb - 使用 morgan 和 winston 以及 node express 将所有 API 请求记录到 mongoDB

sql - 在 MongoDb 查询中执行计算

mongodb - 在 MongoDB 中将一天增加到日期

mongodb - 如何将两个数组转换为 mongoDB 中的对象,其中第一个数组具有多个相同的值

MongoDB 游标不返回所有文档