我在express应用程序中使用uuid包,现在我需要将这些id添加到我的所有文档中。
Users.updateMany({},{$set:{newId:uuid()}},(err,success)=>{
if(success) console.log(success);
});
我尝试了这种方法,成功返回不同的值,但在数据库中它以相同的值保存。我需要在我的文档中使用不同的 id 添加 newId 字段,仅此而已。感谢您的关注和帮助!!
如果您熟悉 async/await 这应该可以工作
async function updateUuid() {
try {
const users = await Users.find({});
for (const user of users) {
const uuid = uuid();
await User.findByIdAndUpdate(user._id, { $set: { newId: uuid } });
}
} catch (e) {
console.error(e);
}
}
后来发现使用 forEach 和函数可以解决生成相同值的问题。下面在mongo工作区执行
function generateRandomString(length) {
var result = '';
var characters = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789!@+_-=';
var charactersLength = characters.length;
for (var i = 0; i < length; ++i) {
result += characters.charAt(Math.floor(Math.random() * charactersLength));
}
return result
};
db.users2.find({}).forEach(function(doc) {
const data = {
...doc,
uuid: generateRandomString(30)
}
db.users.insert(data);
});