繁体   English   中英

MongoDB:插入具有特定id的文档而不是自动生成的ObjectID

[英]MongoDB: insert documents with specific id instead of auto generated ObjectID

我需要使用java在MongoDB上插入文档(使用特定的id而不是自动生成的ObjectID)。

  1. 要插入一个文档或更新(如果存在),我尝试使用findOne搜索id,如果它不存在则insert id然后再insert findAndModify 它有效,但我不觉得它是有效的方式,这是耗时的。 有没有更好的方法来实现这一目标?

  2. 要一次插入多个文档,我正在遵循此解决方案 但我不知道如何插入我的自定义ID而不是objectID?

任何帮助将不胜感激

对于你的第一个问题,MongoDB已经upsert了

db.collection.update(
   {query for id},
   {document},
   {upsert: true}
)

或者在Java驱动程序中

yourCollection.update(searchObject, modifiedObject, true, false);

如果要设置自定义ID,只需手动设置_id键即可

yourBasicDBObject.put("_id",yourCustomId) 

您只需确保它对每个文档都是唯一的。

您还需要在modifiedObject设置_id ,否则将生成一个新的_id

对于批量操作 ,只需通过提供_id键为每个文档设置自定义ID也应该有效。

试试这个@ebt_dev:

db.collection("collectionname").insertOne(data, { forceServerObjectId: false })

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM