鉴于收集了下列物品:
/* 0 */
{
"_id" : "0",
"itemName" : "item1",
"person" :
{
"name" : "a"
}
}
/* 1 */
{
"_id" : "1",
"itemName" : "item2",
"person" :
{
"name" : "a"
}
}
/* 2 */
{
"_id" : "2",
"itemName" : "item3",
"person" :
{
"name" : "b"
}
}如何将名为"a“的人更新为"a2"?
这不管用:
db.items.update(
{ "person.name" : "a" },
{ $set :{ "person.name" :"a2"} }
)UPDATE实际上,上面的工作,但它只适用于第一个记录。向此传递多个参数将更新所有这些参数。
这给了我一个错误:“隐性异常:不能拥有。在字段名person.name”。
db.items.update(
{ "person.name" : "a" },
{ "person.name" : "a2"}
)发布于 2014-07-25 16:07:55
根据您提供的更新信息,如果项集合中的文档如下所示:
{
"_id" : "0",
"itemName" : "item1",
"person" :
{
"name" : "a"
}
}然后,通过运行以下命令,可以将所有命名为"a“的人的名称更新为"b”:
db.items.update({ "person.name" : "a" }, { "$set" : { "person.name" : "b" } }, { "multi" : true });这将匹配name字段中的值"a“的所有人员,将该字段的值设置为"b”,并通过将multi选项设置为true将其应用于所有文档。否则,将只更新第一次匹配。
命令db.items.update({ "person.name" : "a" }, { "person.name" : "a2"} );给出了一个错误,因为使用这个语法,update()所做的是用指定为第二个参数的文档替换整个匹配的文档。因此,它拒绝此更新,认为您希望用包含字段person.name的文档替换为值"a2“。
https://stackoverflow.com/questions/24959398
复制相似问题