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

通过Morphia在MongoDB中保存文档列表,不包括重复的文档,mongodb,morphia,Mongodb,Morphia,我正试图通过morphia在mongodb中保存一个文档列表 实体: class test { @Id private ObjectId id; private String email_id; } 实体在电子邮件id字段上具有唯一索引。 我正在使用保存测试实体列表 datastore.save(list_of_test_entity); 我想要的是,如果列表包含一个重复的测试实体,不要插入它,而是继续添加rest 是否可以使用save方法?您可以使用将continueOnEr

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

实体:

class test {
  @Id
  private ObjectId  id;
  private String email_id;
}
实体在电子邮件id字段上具有唯一索引。 我正在使用保存测试实体列表

datastore.save(list_of_test_entity);
我想要的是,如果列表包含一个重复的测试实体,不要插入它,而是继续添加rest

是否可以使用save方法?

您可以使用将continueOnError标志设置为false的insert variants,该标志指示服务器在AdvancedDatastore上执行无序写入操作

AdvancedDatastore使用批量写入。这将继续处理所有写操作,并将最后一个按其作为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
}