MongoDB update方法中false、true参数作用咨询
关于MongoDB update()方法中后两个参数的解释
你用的是MongoDB旧版的update()语法,后面的false和true分别对应upsert和multi两个配置选项,具体作用如下:
第一个参数
false(upsert选项):
这个参数控制当查询条件匹配不到任何文档时,是否自动创建新文档。设为false时,只会对已存在的匹配文档执行更新;如果设为true,当没有匹配文档时,MongoDB会生成一个符合查询条件的新文档,并应用更新操作。你这里查询条件是空对象{},能匹配集合里所有文档,所以这个参数的影响暂时体现不出来,但如果后续修改查询条件,就需要注意这个配置。第二个参数
true(multi选项):
MongoDB的update()方法默认只更新第一个匹配到的文档。设为true时,会对所有符合查询条件的文档执行更新操作。你这里要把集合里所有文档的user_id.attr重命名为user_id.attrs,必须开启这个选项才能批量修改,否则只会修改第一条匹配的文档。
另外补充个小提示:现在MongoDB官方更推荐使用语义更清晰的updateOne()和updateMany()方法,你可以把这条语句改成:
db.table.updateMany({}, {$rename:{"user_id.attr":"user_id.attrs"}}, {upsert: false})
这种写法用对象传递选项,不用记参数顺序,可读性更强。
内容的提问来源于stack exchange,提问作者sandeep gaur
相关产品推荐
相关产品推荐

