使用 mongo 随机化唯一数据?
Randomizing unique data with mongo?
我正在尝试打乱我数据库中的所有 email
属性。 email
在 Mongoose 模型中被定义为唯一的。这是我在 shell
中尝试 运行 的脚本
db.getCollection('users').update(
{},
{$set{
email:'sanitized'+Math.random()*100000000000000000+'@'+Math.random()*100000000000000000+'.com'
}},
{multi:true}
)
我正在尝试这个:
但是返回错误:
duplicate key error index: test.users.$email_1 dup key
我意识到 Math.random() 并不完美,但此命令从未更新过集合中的第一个文档。
我怎样才能做我想做的事?
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'
}})
})
我正在尝试打乱我数据库中的所有 email
属性。 email
在 Mongoose 模型中被定义为唯一的。这是我在 shell
db.getCollection('users').update(
{},
{$set{
email:'sanitized'+Math.random()*100000000000000000+'@'+Math.random()*100000000000000000+'.com'
}},
{multi:true}
)
我正在尝试这个:
但是返回错误:
duplicate key error index: test.users.$email_1 dup key
我意识到 Math.random() 并不完美,但此命令从未更新过集合中的第一个文档。
我怎样才能做我想做的事?
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'
}})
})