2016-10-16 4 views
1

mongodb 컬렉션에서 java를 통해 다른 컬렉션 (또는 존재하는 경우 업데이트)으로 문서를 복사하려고합니다.하나의 컬렉션에서 다른 컬렉션으로 문서 복사 (존재하는 경우 업데이트)

기존 컬렉션의 각 필드를 추가 한 다음 다른 필드에 삽입하고 싶지 않습니다. 어떻게해야합니까?

여기에는 tempnational의 두 가지 컬렉션이 있습니다. temp에는 하나의 컬렉션 만 있습니다.이 컬렉션은 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

그래서 당신이 존재하지 않으면 존재하는 경우와 B를 교체하거나 새로 만들 건가요? – Dada

+0

예, A는 "temp"컬렉션의 문서이고 B는 "national"컬렉션의 문서입니다 –

답변

1

당신이 replaceOne을 사용할 수 있습니다 DOC1와 Doc2를 교체하려는 경우()

replaceOne은() 교체 문서를 사용하여 필터와 일치하는 컬렉션의 첫 번째 일치하는 문서를 대체합니다.

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

+0

@ Daniele Tassone 감사합니다 ... –

+0

업데이트 방법을 시도했습니다 (upsert : true 옵션 사용) –

관련 문제