2016-10-16 5 views
1

mongodbのコレクションから別のコレクション(または存在する場合は更新)にjavaを使用してドキュメントをコピーしたい。コレクションを別のコレクションにコピーする(存在する場合は更新する)

既存のコレクションの各フィールドを追加して別のフィールドに挿入したくないです。これどうやってするの?

ここに2つのコレクション、tempnationalがあります。 tempにはコレクションが1つしかありません。コレクションはnationalにコピーするか、存在する場合は更新する必要があります。

MongoCursor<Document> cursor = db.getCollection("temp").find().iterator(); 
try { 
    Document doc = new Document(cursor.next()); 
    Document new_doc = new Document("$set",doc); 
    doc.append("booking_id",cursor.next().get("booking_id")); 
    MongoCursor<Document> cursor1 = db.getCollection("national").find(doc).iterator(); 
    Bson filter = Filters.eq("booking_id", args); 
    Bson update = Filters.elemMatch("booking_id", filter); 
    UpdateOptions options = new UpdateOptions().upsert(true); 
    national.updateOne(filter, new_doc, options); 
} 
finally { 
    cursor.close(); 
} 
+0

あなたが存在する場合はAとBを交換する、または存在しない場合は、新しいものを作成する意味ですか? – Dada

+0

はい、Aは "temp"コレクションの文書で、Bは "national"コレクションの文書です –

答えて

1

あなたがいるDoc1とDoc2のを置き換えたい場合はreplaceOneを(使用することができます)

replaceOneは()の交換文書を使用して、フィルタに一致するコレクション内で最初に一致した文書を置き換えます。

https://docs.mongodb.com/v3.2/reference/method/db.collection.replaceOne/

+0

ありがとう@ダニエル・タソーン... –

+0

私は更新方法を試していました(upsert:trueオプション付き) –

関連する問題