我需要使用java在MongoDB上插入文档(使用特定的id而不是自动生成的ObjectID)。
要插入一个文档或更新(如果存在),我尝试使用findOne
搜索ID,如果它不存在,则insert
ID,然后findAndModify
。它有效,但我不觉得它是有效的方式,这是耗时的。有没有更好的方法来实现这一目标?
要一次插入多个文档,我正在关注此solution。但我不知道如何插入我的自定义ID而不是objectID?
任何帮助将不胜感激
答案 0 :(得分:4)
第一个问题mongodb has upsert所以
db.collection.update( {query for id}, {文献}, {upsert:true} )
yourCollection.update(searchObject,modifiedObject,true,false);
如果您想设置自定义ID,只需手动设置_id
密钥即可。
yourBasicDBObject.put(" _id",yourCustomId)
您必须确保每个文档都是唯一的。
您还需要在_id
中设置modifiedObject
,否则新的将{
生成。
对于批量操作,只需通过提供_id
密钥为每个documnet设置自定义ID
也应该有效。
答案 1 :(得分:0)
尝试使用此@ebt_dev:
db.collection("collectionname").insertOne(data, { forceServerObjectId: false })