2017-02-26 54 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 
}