2013-03-01 5 views
1

mongodb 업데이트 방법에 약간의 문제가 있습니다. 이것은 내 (단순화 된) 스키마입니다.mongodb의 하위 요소 업데이트

{ 
    profile: { 
     birthdate: "XXX", 
     city: "xxx" 
    }, 
    account: { 
     username: "...", 
     password: "....", 
     visits: 0 
    } 
} 

DB에 2000 개의 개체가 있습니다. 사용자 이름 값을 제거하여 데이터를 익명화하고 싶습니다.

나는 노력이 : 작품이 쿼리 암호 필드와 방문을 제거하지 않습니다

db.users.update({}, {$set: account: {username: ""}}, false, true); 

. 왜 그런지 이해하지만 어떻게해야합니까?

db.users.update({}, {account: { $set: {username: ""}}}, false, true); 

몽고는 "$ set"필드를 할당하려고합니다. 그래서 작동하지 않습니다.

내 질문은 : 전체 "계정"하위 문서를 제거하지 않고 하위 필드를 업데이트하는 방법은 무엇입니까?

(true로 "upsert"를 설정하면 동일한 작업을 수행합니다.)

답변

4

당신은 사용해야합니다 : 당신이 $unset를 사용하지 않는 이유는 그냥

$set:{"account.username":""} 

궁금해?

+0

감사합니다,하지만 그 > db.users.update 작동하지 않습니다는 ({}, {$ 설정 : {account.username : ""}}, 거짓, 참) 금 3월 1일 11시 52분 21초을 컴파일 오류 : (셸) : 1 SyntaxError : 예기치 않은 토큰입니다. 이 데이터베이스가이 필드가 존재한다는 것을 알아야하는 다른 사람들과 공유되기 때문에 사용자 이름을 유지해야합니다. 하지만 기존 사용자 이름을 숨겨야합니다 (일부 임의의 데이터를 넣을 것입니다) – Metal3d

+0

내 신 ... 알았어 ... 이중 따옴표를 사용하는 것을 잊어 버렸습니다! 고마워요! – Metal3d