我正在尝试通过morphia保存mongodb中的文档列表。
实体:
class test {
@Id
private ObjectId id;
private String email_id;
}
实体在email_id字段上有唯一索引。 我正在使用;
保存测试实体列表datastore.save(list_of_test_entity);
我想要的是如果列表包含一个重复的Test实体,不要插入但继续添加休息。
是否可以使用save()
方法?
答案 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
}