2016-10-11 2 views
0

나는 below-Rethinkdb 업데이트 중첩 된 객체

{ 
 
\t "badgeCount": { 
 
\t \t "0e2f8e0c-2a18-499d-8e64-75b5d284e31a": 0 , 
 
\t \t "c0d07f5c-25ff-4829-8145-c33c0871f889": 0 
 
\t } , 
 
\t "createdDate": Mon Oct 10 2016 19:25:10 GMT+00:00 , 
 
\t "deleted": false , 
 
\t "id": "1330c8b8-38a2-46e4-b93d-f7ff84a423ed", 
 
\t "joinedUserIds": 
 
\t [ 
 
\t \t "0e2f8e0c-2a18-499d-8e64-75b5d284e31a" 
 
\t ] 
 
}

같은 문서가 내가하고 싶은 것은 joinedUserId "0e2f8e0c-2a18-499d-8e64-75b5d284e31a"및 업데이트 badgeCount에 의해 제거이다가 동일한 쿼리에서 첫 번째 속성 "0e2f8e0c-2a18-499d-8e64-75b5d284e31a": 0을 제거합니다.

나는

r.db('mydb').table('discussion').filter({"id": "1330c8b8-38a2-46e4-b93d-f7ff84a423ed"}) 
 
    .update(function(s){ 
 
     return { 
 
     badgeCount: s('badgeCount').without("0e2f8e0c-2a18-499d-8e64-75b5d284e31a") 
 
     } 
 
    })

below- 같은 badgeCount를 업데이트하려고하지만 그것은 작동하지 않습니다. 내가 무엇을 놓치고 있는지 잘 모르겠다.

감사 아누 프

답변

0

다시 생각은 다음과 같이 작동하지 않습니다. 객체를 update으로 다시 쓰지 않습니다.

이 경우 현재 replace 개체가 필요합니다. 그리고 btw는 대신 filter을 사용하는 것이 더 빠릅니다. 이 상황에서 같은 일을하기 때문에 원인 ID 필드가 고유합니다. 당신이 badgeCount에서 "0e2f8e0c-2a18-499d-8e64-75b5d284e31a"을 제거하려면

그래서, 당신은 replace를 사용한다 : 답장을 보내

r.db('mydb').table('discussion').get("1330c8b8-38a2-46e4-b93d-f7ff84a423ed").replace(function(s){ 
    return s.without({badgeCount : {"0e2f8e0c-2a18-499d-8e64-75b5d284e31a" : true}}).without("joinedUserIds").merge({ 
    joinedUserIds : s("joinedUserIds").filter(function(id){ 
     return id.ne("0e2f8e0c-2a18-499d-8e64-75b5d284e31a"); 
    }) 
    }); 
}) 
+0

감사합니다. badgeCount 만 바꾸려면 잘 작동합니다. 하지만 같은 쿼리에서 joinedUserIds에서 0e2f8e0c-2a18-499d-8e64-75b5d284e31a도 제거하고 싶습니다. 어떻게해야합니까? –

+0

이 코드를 실행하면이 오류가 발생합니다. "비 개체가 아닌 시퀀스에서 'null'을 수행하지 않으면 수행 할 수 없습니다." –

+0

@AnupDasGupta ID가 "1330c8b8-38a2-46e4-b93d-f7ff84a423ed"인 항목을 다시 생각해 보시겠습니까? – Suvitruf