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

时间:2017-02-26 14:56:37

标签: mongodb morphia

我正在尝试通过morphia保存mongodb中的文档列表。

实体:

class test {
  @Id
  private ObjectId  id;
  private String email_id;
}

实体在email_id字段上有唯一索引。 我正在使用;

保存测试实体列表
datastore.save(list_of_test_entity);

我想要的是如果列表包含一个重复的Test实体,不要插入但继续添加休息。

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

1 个答案:

答案 0 :(得分:1)

您可以使用insert标记设置为false的continueOnError变体,表示服务器在unordered上执行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
}