mongoose 更新所有文档,添加具有不同值的新字段

2nc8po8w  于 12个月前  发布在  Go
关注(0)|答案(2)|浏览(111)

我在express应用程序中使用uuid包,现在我需要将这些id添加到所有文档中。

Users.updateMany({},{$set:{newId:uuid()}},(err,success)=>{
      if(success) console.log(success);
});

字符串
我尝试了这种方式,成功返回不同的值,但在数据库中它保存相同的值.我需要在我的文档中添加新的ID字段与不同的ID,这就是全部.感谢关注和帮助!!

yiytaume

yiytaume1#

如果你熟悉candlc/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);
  }
}

字符串

xfb7svmp

xfb7svmp2#

后来发现,使用forEach和一个函数解决了生成相同值的问题。

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);
});

字符串

相关问题