2013-01-03 43 views
2

我正在使用node.js mongodb本地驅動程序。mongodb使用json更新同一行的多個字段

比方說,我有一個MongoDB的集合稱爲任務,每個任務看起來像

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

從用戶輸入我得到的形式

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

的JSON對象newData「我就是道路用這個新數據更新我的mongodb行有點像

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

這裏只有兩個字段,所以在newData的每一對上使用$ set是可以的,但是我的問題是我可以更新這一行,而不必在ne​​wData的每一對上寫$ set,只需提一次newData。 (很明顯,我將保留對密鑰中newData一樣的人是MongoDB的行)

+0

只有通過更改您的文檔結構才能接受您的newData對象。你可以將newData屬性值複製到本地,但是對於你的例子來說它看起來似乎很少。您可以在JavaScript中使用([with] https://developer.mozilla.org/en-US/docs/JavaScript/Reference/Statements/with)語句,但速度不會更快,並且不推薦使用或者在JS嚴格模式下支持。 – WiredPrairie

回答

1

由於現場名稱相匹配,就可以直接使用newData$set這樣的:

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

但是,如果您不驗證哪些字段包含newData,這可以將不需要的數據添加到您的任務文檔。

相關問題