2017-12-14 6 views
0

MongoDB 문서의 2 개체를 키가 병합 된 단일 개체로 그룹화하려고합니다.2 개체를 1 개체로 그룹화하고 키를 병합

{ 
    "_id": ObjectId("..."), 
    "object_a": { "keyA": 1, "keyB": "valueB" } 
    "object_b": { "keyC": 2 } 
} 

그리고 내가 무엇을 얻을려고하면 다음과 같다 : 내가 가지고있는 것은

{ 
    "_id": ObjectId("..."), 
    "object_a": { "keyA": 1, "keyB": "valueB", "keyC": 2 } 
} 
  • 내가 키와 충돌
  • I 키를 모르는이 없음을 주장 할 수 이름 사전에

나는 $addFields 연산자로 시도했지만이 중첩됩니다 object_b 내부 e object_a, 키를 병합하지 않습니다.

{ 
    "$addFields": 
    { 
    "object_a": "$object_b" 
    } 
} 

다른 말로하면, 객체에 대해 $setUnion을 찾고 있습니다.

답변

1

3.6에 $mergeObjects을 사용할 수 있습니다.

{"$addFields":{"object_a": {"$mergeObjects": ["$object_a", "$object_b"]}}} 

3.4의 경우는 키를 병합 $arrayToObject$objectToArray를 사용할 수 있습니다.

{"$addFields":{"object_a": { "$arrayToObject": {"$setUnion": [{"$objectToArray": "$object_a"},{"$objectToArray": "$object_b"}]}}}} 
+0

완벽한 답변. 그리고'$ ifNull'을 사용하면 널 처리를 위해 MongoDB 3.4에서'$ mergeObjects' 연산을 완전히 재현 할 수 있습니다. 고맙습니다. – kagmole