如何删除 MongoDB 中的 _id 并替换为另一个字段作为主键?

2024-02-13

我收藏了大量文件。我想从所有文档中删除自动生成的对象 ID(_id 键)并将其替换为另一个字段作为主键?

我不明白为什么首先需要一个默认的对象 ID?


在 mongodb 中,每个文档必须是唯一的,因此您需要一个唯一的字段来用作 id。如果您不提供,mongodb 会自动为您提供。但是,如果您出于任何原因想要提供自定义 ID(提高查询性能是其中之一),您可以手动执行此操作。这是我的建议:

如果您要插入新文档,您可以手动设置 _id 字段,例如:

doc._id = "12312312" //(Or whichever function to generate id you have)
doc.save(...)

但是当数据库中已有文档时,就无法再对其进行修改。您可以做的是制作文档的副本,保存具有相同数据的新文档并删除旧文档:

// Fetch the documents
docs = db.clients.find({})

docs.forEach((doc) => {
   //For each field you copy the values
   new_doc.field = doc.field
   new_doc._id = //YOUR ID FUNCTION 

   // insert the document, using the new _id
   db.clients.insert(new_doc)

   // remove the document with the old _id
   db.clients.remove({_id: doc._id})
}

这个问题与下面这个问题类似:

如何更新一个MongoDB文档的_id? https://stackoverflow.com/questions/4012855/how-update-the-id-of-one-mongodb-document

希望我的回答有帮助

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何删除 MongoDB 中的 _id 并替换为另一个字段作为主键? 的相关文章

随机推荐