我正在使用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查询。但没有错误,记录也没有得到更新。
答案 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'}});