2017-02-26 58 views
0

我试图通过morphia将文档列表保存在mongodb中。通过Morphia保存MongoDB中的文档列表(不包括重复项)

实体:

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

实体有一个EMAIL_ID场唯一索引。 我正在保存使用测试实体的列表;

datastore.save(list_of_test_entity); 

我要的是如果列表中包含这是一个重复的测试实体,不插入,但继续增加休息。

save()方法可以吗?

回答

0

您可以使用insert变体与continueOnError标志设置为false哪些信号服务器做unorderedAdvancedDatastore写操作。

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 
}