[英]MongoDB: insert documents with specific id instead of auto generated ObjectID
我需要使用java在MongoDB上插入文档(使用特定的id而不是自动生成的ObjectID)。
要插入一个文档或更新(如果存在),我尝试使用findOne
搜索id,如果它不存在则insert
id然后再insert
findAndModify
。 它有效,但我不觉得它是有效的方式,这是耗时的。 有没有更好的方法来实现这一目标?
要一次插入多个文档,我正在遵循此解决方案 。 但我不知道如何插入我的自定义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.