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

时间:2014-10-09 08:33:49

标签: java mongodb

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

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

  2. 要一次插入多个文档,我正在关注此solution。但我不知道如何插入我的自定义ID而不是objectID?

  3. 任何帮助将不胜感激

2 个答案:

答案 0 :(得分:4)

  1. 第一个问题mongodb has upsert所以

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

    the java driver

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

    如果您想设置自定义ID,只需手动设置_id密钥即可。

    yourBasicDBObject.put(" _id",yourCustomId)

    您必须确保每个文档都是唯一的。

    您还需要在_id中设置modifiedObject,否则新的将{ 生成。

  2. 对于批量操作,只需通过提供_id密钥为每个documnet设置自定义ID 也应该有效。

答案 1 :(得分:0)

尝试使用此@ebt_dev:

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