2013-01-03 3 views
2

나는 node.js mongodb native 드라이버를 사용하고 있습니다.mongodb json을 사용하여 동일한 행의 여러 필드를 업데이트하십시오.

각 작업은 사용자의 입력에서

{date:'29th jan', desc:'xxx', status:'incomplete'} 

처럼 나는 내가 길을 형태

{desc:'yyy',status:'complete'} 

의 JSON 객체 'newData의'를 얻을 보이의 내가 작업이라는 MongoDB를 수집 있다고 가정 해 봅시다 이 newData로 mongodb 행을 업데이트하는 경우

db.tasks.update({_id:newData.id},{$set:{desc:newData.desc,status:newData.status}}) 

여기에는 두 개의 필드 만 있습니다. newData의 각 쌍에 $ set을 사용하는 것은 괜찮습니다.하지만 newData에서 각 쌍에 $ 집합을 쓰지 않고 newData를 한 번 언급하면 ​​내 행을 업데이트 할 수 있습니다. 필드 이름이 일치하기 때문에 당신이 직접처럼 $setnewData를 사용할 수

+0

newData 객체를 허용하도록 문서 구조를 변경해야합니다. newData 속성 값을 지역에 복사 할 수는 있지만 사용자의 경우에는 거의 그렇지 않습니다. 자바 스크립트에서 ([with] https://developer.mozilla.org/en-US/docs/JavaScript/Reference/Statements/with) 문을 사용할 수 있지만 더 빠르지는 않을 것이므로 권장하지 않습니다. 또는 JS 엄격 모드에서 지원됩니다. – WiredPrairie

답변

1

을 (사람이 MongoDB를 행이기 때문에 분명히 나는 ​​같은 newData에있는 한 쌍의 키를 유지합니다) :

db.tasks.update({_id:newData.id}, {$set: newData}) 

를하지만, 경우 newData에 포함 된 필드의 유효성을 검사하지 않으면 작업 문서에 원하지 않는 데이터가 추가 될 수 있습니다.

관련 문제