2017-05-17 9 views
0

해시가 {a: 1, b: 2, c: 3}values 필드가있는 MongoDB 문서가 있다고 가정합니다. 그런 다음이 문서의 새 버전을 올리려면 여기를 클릭하십시오. values: {c: 4, d: 5}.문서의 해시 필드를 MongoDB의 upsert에 새 해시로 병합하는 방법이 있습니까?

내가 찾고자하는 것은 Mongo가 먼저 문서의 이전 버전을 풀 필요없이 Mongo 측을 병합하도록하는 방법입니다. 나는. upsert 후 결과 문서는 values: {a: 1, b: 2, c: 4, d: 5}이어야합니다.

현재 RethinkDB에서 old_doc + new_doc의 병합을 처리하는 사용자 지정 충돌 해결 람다 함수를 제공하여이 작업을 수행 할 수 있습니다. (https://www.rethinkdb.com/api/ruby/insert/)

Mongo에서 이것을 복제 할 수 있습니까?

답변

0

findOneAndUpdate과 $ set opeartor를 사용할 수 있습니다. 그래서 여기에이

db.<collection_name>.findOneAndUpdate(
{_id: <id of the doc>}, 
{$set: {"values.c": 4, "values.d": 5}}) 

같은 쿼리를 작성합니다 것은 내가

db.users.findOneAndUpdate(
    {_id: ObjectId("591cd8641c02e094596479ea")}, 
    {$set: {"values.c": 4, "values.d": 5}}) 
을 테스트 한 예이다