假设集合学生包含以下文档。
{name:”Nithin”,age:23}
{name:”Nithin”,age:25}
{name:”Nithin”,age:28}
{name:”Nithin”,age:12} 我想更新所有的文档,其名称为“Nithin”为age=60。如果我们执行以下查询,它将只更新第一个文档。
db.student.update({name:”Nithin”},{age:60})要更新所有文档,我必须使用查询
db.student.update({name:”Nithin”},{age:60},false,true)
or
db.student.update({name:”Nithin”},{age:60},multi:true)默认情况下,mongodb不执行db.student.update({name:”Nithin”},{age:60})更新所有文档的原因是什么?创建用于更新所有文档的单独查询的动机是什么?它能提高性能吗?
发布于 2013-05-22 08:34:30
发布于 2013-05-22 08:41:45
这可能并不是真正的原因,但我发现附加的multi参数是一种安全措施,可以防止在只更新单个文档时意外更新多条记录,比如在不指定额外约束的情况下意外地在SQL上执行UPDATE...SET。
同样,这只是一个假设,但事实可能并非如此。
发布于 2013-05-22 08:48:32
我想部分原因可能是为了避免来自SQL世界的人把多文档更新看作是孤立的事务。
实际上,在长时间更新期间,MongoDB会周期性地向其他查询提供控制,这些查询可能会修改相同的数据集。
因此,通过显式设置multi=true,您在某种程度上承认了这一事实(嗯,不完全是这样,但我想这就是精神.)
https://stackoverflow.com/questions/16686922
复制相似问题