当前位置: 首页 > 面试题库 >

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

阴高寒
2023-03-14
问题内容

我需要使用Java在MongoDB上插入文档(使用特定ID代替自动生成的ObjectID)。

  1. 要插入一个文档或更新(如果存在),我尝试使用findOne搜索ID,如果不存在,则搜索insertID然后选择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)

您只需要确保每个文档都是唯一的即可。

您还需要在中设置_idmodifiedObject否则将生成一个新的。

至于 批量操作 ,只需通过提供_id密钥为每个文档设置自定义ID 也可以。



 类似资料:
  • 我刚开始制作一个使用云fiRecovery作为数据库的简单网站。当用户添加新数据时,我让fiRecovery自动生成文档ID(作为图像)。现在我想得到那个文档ID,但我对此一无所知。这是我的代码: 当我使用控制台时。log(documentId)在该promise之外,它返回“未定义”。请帮忙,谢谢!

  • 文档存在,但筛选时不匹配! 您好,我在我的项目中发现了一个新错误。我正在使用nodejs后端和mongodb数据库。我正在成功插入文档。但有一个特定领域(“proje\u ortagi”)让我感到困惑。因为当我将文档过滤为“\u id”字段时。所有文件都在响应。但当我将文档过滤为“proje\u ortagi”时,有些文档并不是响应。为什么会发生这种情况?我检查“proje\u ortagi”值的

  • 我将NestJs与TypeORM和MongoDB一起使用。我有一个实体,它可能有一个后续项目。我目前的实体设计是 当我想保留数据类型时,似乎必须是一个。但是我想禁用自动生成,因为我想手动分配后续项目。因此,在我的存储库中,我通过 问题是,当我将分配给时,MongoDB将的相同值分配给。因此json响应将是 我如何纠正这种行为?我不确定是否需要关系,但我想提供一个验证,以便只能将现有ID分配为后续I

  • 你好,我有一个mongodb find()问题查询。我试图找到在同一个对象数组中有两个特定ID的所有文档。 示例文档结构: 如果我能帮你解决这两个问题中的任何一个,那就太好了!谢了。

  • 如何编辑此代码,以便在Firestore中创建自己的自定义文档id?

  • 主要内容:insert() 与 save() 方法,insertOne() 方法,insertMany() 方法前面我们已经介绍了如何在 MongoDB 中 创建数据库和 创建集合,接下来我们再来介绍一下如何在集合中插入文档。文档是 MongoDB 中数据的基本单位,由 BSON 格式(一种计算机数据交换格式,类似于 JSON)的键/值对组成。 insert() 与 save() 方法 您可以使用 MongoDB 中的 insert() 或 save() 方法向集合中插入文档,语法如下: db.