Mongodb 使用mongo随机化唯一数据?

Mongodb 使用mongo随机化唯一数据?,mongodb,mongodb-update,Mongodb,Mongodb Update,我正在尝试对数据库中的所有电子邮件属性进行置乱电子邮件在Mongoose模型中定义为唯一。这是我试图在shell中运行的脚本 db.getCollection('users').update( {}, {$set{ email:'sanitized'+Math.random()*100000000000000000+'@'+Math.random()*100000000000000000+'.com' }}, {multi:true} ) 我正在尝试这个: 但它回来时出

我正在尝试对数据库中的所有
电子邮件
属性进行置乱<代码>电子邮件在Mongoose模型中定义为唯一。这是我试图在shell中运行的脚本

db.getCollection('users').update(
  {},
  {$set{
    email:'sanitized'+Math.random()*100000000000000000+'@'+Math.random()*100000000000000000+'.com'
  }},
  {multi:true}
)
我正在尝试这个:

但它回来时出现了一个错误:

重复密钥错误索引:test.users.$email\u 1重复密钥

我意识到Math.random()并不是完美的,但是这个命令的更新次数从来没有超过集合中的第一个文档


如何做我想做的事?

数学。随机的函数在每个客户端执行一次,然后这一个恒定的电子邮件值被传递到更新函数中

如果电子邮件上没有唯一的索引,则数据库中的每个用户都将被设置为同一封电子邮件

您可以执行如下的个别更新:

db.getCollection('users').find().forEach(function(u){
  db.users.update({_id : u._id}, {$set:{
    email:'sanitized'+Math.random()*100000000000000000+'@'+Math.random()*100000000000000000+'.com'
  }})
})

哦,我明白了。我希望Math.random为每个用户运行一次。这是有道理的。