更新mongodb中的查询

时间:2014-10-09 06:03:47

标签: mongodb updates

我正在使用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"
}

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

2 个答案:

答案 0 :(得分:7)

db.collection.update(
   <query>,
   <update>,
   {
     upsert: <boolean>,
     multi: <boolean>,
     writeConcern: <document>
   }
)

代替您用来查找要更新的记录的相同查询

代替输入新值,例如在插入查询期间执行 还有3个选项:

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

=可选。如果设置为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 }
)

签出upsert:true,因此如果找不到name = Andy

,它将创建新的doc

多文档更新示例:

db.books.update(
   { stock: { $lte: 10 } },
   { $set: { reorder: true } },
   { multi: true }
)

您的数据示例:

db.people.update(
   { _id: ObjectId("53870ed7e4b00e612650c1b8") },
   {
      dataMap: {
        "241": "321"
      }
   }
)

应该有用。

所有这些都在官方文档中:

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

答案 1 :(得分:1)

db.payloadObject.update({"dataMap.241":'1234'},{$set :{"dataMap.241":'123456'}});