更新mongo db中的查询

use*_*890 1 updates mongodb

我使用mongodb数据库来保存记录.

这是一个样本记录:

 "_id" : ObjectId("53870ed7e4b00e612650c1b8"),
"_class" : "mkcl.os.transformer.PayloadObject",
"formId" : NumberLong(50),
"dataMap" : {
    "240" : "ramanbaug",
    "241" : "1234",
    "242" : "12345678",
    "243" : "mr.joshi",
    "244" : "8308009391 ",
    "245" : "anuja2487@gmail.com",
    "280" : "456",
    "287" : "1234",
    "276" : "29/05/14",
    "247" : "No",
    "248" : "No",
    "249" : "Yes",
    "250" : "No",
    "251" : "Yes",
    "252" : "No"
}
Run Code Online (Sandbox Code Playgroud)

现在我想更新字段"241"的值.我读到了Update和FindAndModify查询.但没有错误,记录也没有得到更新.

Luk*_*kas 7

db.collection.update(
   <query>,
   <update>,
   {
     upsert: <boolean>,
     multi: <boolean>,
     writeConcern: <document>
   }
)
Run Code Online (Sandbox Code Playgroud)

在输入相同查询的位置,用于查找要更新的记录

在输入新值的位置,比如在插入查询期间执行,还有3个选项:

upsert =可选.如果设置为true,则在没有文档与查询条件匹配时创建新文档.默认值为false,如果未找到匹配项,则不会插入新文档.因此,如果找不到您的文档,您将创建一个新文档

multi =可选.如果设置为true,则更新符合查询条件的多个文档.如果设置为false,则更新一个文档.默认值为false.有关其他信息,请参阅多参数.

writeConcern =可选.表达写作关注的文件.省略使用默认写入问题.

你可以在这里阅读更多关于写作的内容:http://docs.mongodb.org/manual/core/write-concern/

单个文档更新示例:

db.people.update(
   { name: "Andy" },
   {
      name: "Andy",
      rating: 1,
      score: 1
   },
   { upsert: true }
)
Run Code Online (Sandbox Code Playgroud)

检查upsert:true,因此如果没有找到name = Andy,它将创建新的doc

多文档更新示例:

db.books.update(
   { stock: { $lte: 10 } },
   { $set: { reorder: true } },
   { multi: true }
)
Run Code Online (Sandbox Code Playgroud)

您的数据示例:

db.people.update(
   { _id: ObjectId("53870ed7e4b00e612650c1b8") },
   {
      dataMap: {
        "241": "321"
      }
   }
)
Run Code Online (Sandbox Code Playgroud)

应该工作.

这些都在官方文档中:

http://docs.mongodb.org/manual/reference/method/db.collection.update/