当前位置: 首页 > 知识库问答 >
问题:

通过Morphia在MongoDB中保存不包括重复文档的文档列表

欧阳高昂
2023-03-14

我正试图通过Morphia在mongodb中保存一个文档列表。

class test {
  @Id
  private ObjectId  id;
  private String email_id;
}
datastore.save(list_of_test_entity);

我想要的是,如果列表包含一个重复的测试实体,不要插入它,而是继续添加REST。

是否可以使用save()方法?

共有1个答案

申屠英韶
2023-03-14

您可以使用insert变量,并将continueonerror标志设置为false,这将指示服务器对AdvancedDataStore执行无序写操作。

AdvancedDataStore使用Bulkwrites。这将继续处理所有写操作,并按照DuplicateKeyException处理的顺序抛出最后一个。因此可以添加try catch来忽略错误。

AdvancedDatastore datastore = (AdvancedDatastore) morphia.createDatastore(mongoClient, dbName);
InsertOptions insertOptions = new InsertOptions();
insertOptions.continueOnError(true);
try {
datastore.insert(list_of_test_entity, insertOptions);
catch (DuplicateKeyException e){
  //Ignore
}
 类似资料:
  • 现在我想做的是将一个GeoStamps列表推送到Mongo中的GeoStamp数组,在那里我首先过滤跟踪器的ObjectId或它的iCAN。然后在文档中发现我需要按日过滤,所以我不会将GeoStamp列表添加到分布在多个日期的多个GeoStamp数组中。 我想可以用下面的方法来做: 我的查询(是的,我知道retrievedFields是不推荐的,我不想使用它,但这是我最接近工作的解决方案): 写入

  • 我不会保存对象就业没有_id我想保存只是属性"就业"如下: 此文档和在db上记录的文档,具有自动生成的_id属性 我的Attribute employe模式为:

  • 我有一个具有以下模式的用户集合: 用户将查找用户。名称,必须是唯一的。添加新用户时,我首先执行搜索,如果没有找到这样的用户,我会将新用户文档添加到集合中。搜索用户和添加新用户(如果未找到)的操作不是原子操作,因此,当多个应用程序服务器连接到DB服务器时,可能会同时收到两个具有相同用户名的添加用户请求,从而导致两个添加用户请求都找不到这样的用户,这反过来会导致两个文档具有相同的“user.name”

  • 问题是,即使我能够成功发送文档,其他用户也可以在线签名,但当我转到docusign配置文件时,发送的文档是不可见的。如果我不使用代表发送功能,文档连同状态,即out for signature或Signated将显示在我的配置文件中。这是怎么回事?谢谢

  • 我已经为Word创建了一个插件。我正在尝试通过单击按钮更新word文档中的自定义属性的值。但却得不到拯救。我写的代码是: 但如果我在文档中添加一个空格然后保存它。然后保存自定义属性的值。代码为: 为什么行为是这样的。我不想在我的文档中添加任何额外的空白处。请帮帮我。提前道谢。

  • 问题内容: 我正在尝试通过ID选择文档 我试过了: 还尝试了: 这给我一个错误500 … 这些都不起作用。如何通过_id选择? 问题答案: