我想在_id小于200的所有文档中更改2个属性的值,新值将是随机的(从1到15)。所以我开始编写这个脚本但不起作用:
db.myCollection.update(
{ _id: { $lt: 200 }},
{
tilte1 : "hello"+Math.floor(Math.random()*16),
title2 : ["hello"+Math.floor(Math.random()*16),"hello"+Math.floor(Math.random()*16),"hello"+Math.floor(Math.random()*16)],
})
感谢您的帮助。
答案 0 :(得分:0)
db.myCollection.update(
{ _id: { $lt: 200 }},
{
$set : { title1 : "hello"+Math.floor(Math.random()*16) ,
title2 : ["hello"+Math.floor(Math.random()*16),"hello"+Math.floor(Math.random()*16),"hello"+Math.floor(Math.random()*16)]}
}, {multi: true});
您需要添加{multi: true}
来更新所有文档,否则它只会更新第一个文档。
你在title1
字段中输错了。确保其tilte1
或title1
。
如果您想保留文档中的前一个字段,请使用$set
。根据您当前的查询,它将替换文档并仅使用这两个字段。
请注意:Multi updates only works with $ operators