2017-11-13 7 views
2

나는 예를 들어 다음과 같은 문서가있는 경우 : { 는 "확인": "BMW" "make1": "아우디" }카우치베이스 주식회사 - 문서 내에서 객체를 업데이트

을 내가 UPDATE를 할 쿼리를 UPDATE 번역 SET make2 = "MERCEDES"WHERE META(). id = "CARS"는 쿼리에 문제가 없으며 문서에 make2가 추가됩니다.

내가 UPDATE 쿼리를 수행 할 때 UPDATE Translations SET make2. MODEL = "CLS", make2. MODIFICATION = "500"WHERE META(). id = "CARS" 쿼리는 "성공"을 반환하지만 아무 것도 추가되지 않습니다. make2가 이미 존재하면 모든 것이 예상대로 갱신되며, 오브젝트가없는 경우에만 문제점이 나타납니다.

답변

1

상위 속성이 JSON 개체 인 경우에만 중첩 속성을 업데이트 할 수 있습니다. 부모 속성이 문자열로 설정된 경우 사용자가 명시한 것과 달리 업데이트가 성공하지 못합니다.

UPDATE Translations USE KEYS "CARS" 
    SET make2 = {}; 
UPDATE Translations USE KEYS "CARS" 
    SET make2.MODEL = "CLS", d.make7.MODIFICATION = "500"; 

또는 당신은 한 줄에이 작업을 수행 할 수 있습니다 :

이 작동 문자열로 설정 부모와

UPDATE Translations USE KEYS "CARS" 
    SET make2 = {}, make2.MODEL = "CLS", d.make7.MODIFICATION = "500"; 
나는 일반적인 문자열 속성을 예를주고 있었다
+0

아닌 중첩 특성 두 번째 예제는 make2가 이미 객체로 존재하면 성공합니다. 나는 당신의 제안을 시도하고 make2 = {}로 설정했다. 이제는 작동한다. 고마워. –

+1

하지만 조심해야합니다! make2의 다른 모든 항목은 삭제되므로 기술적으로 경로를 설정하지 않고 make2 오브젝트를 {MODEL : "CLS"}로 바꿉니다. 전에 make2에 있던 다른 모든 것들을 풀어 놓을 것입니다. https://forums.couchbase.com/t/updating-anentity-object-problem/14778/2 누군가 make2의 내용을 보존하고 MODEL 만 업데이트하는 더 나은 솔루션을 게시하는 곳을 참조하십시오. –