2017-02-26 4 views
0

私はモンゴブを使ってmongodbに文書のリストを保存しようとしています。MongoDBの文書リストを複製を除いたモルフィアで

エンティティ:

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

エンティティがEMAIL_IDフィールドに一意のインデックスを持っています。 私はテストエンティティのリストを保存しています。

datastore.save(list_of_test_entity); 

リストに、重複しているテストエンティティが含まれている場合は挿入しませんが、残りの部分を追加し続けます。

save()の方法で可能ですか?

答えて

0

あなたは、サーバーがAdvancedDatastoreunordered書き込み操作を行うために信号をfalseに設定continueOnErrorフラグでinsertバリアントを使用することができます。

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 
} 
関連する問題