【问题标题】:mongodb update multiple fields of the same row using jsonmongodb使用json更新同一行的多个字段
【发布时间】:2013-01-03 11:23:54
【问题描述】:

我正在使用 node.js mongodb 本机驱动程序。

假设我有一个名为 tasks 的 mongodb 集合,每个任务看起来像

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

从用户输入我得到一个 JSON 对象“newData”的形式

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

我用这个 newData 更新我的 mongodb 行的方式类似于

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

这里只有两个字段,所以在 newData 中的每一对上使用 $set 是可以的,但我的问题是我可以更新行,而不必在 newData 中的每一对上写 $set,只提到一次 newData。 (显然我会保持 newData 中的键对与 mongodb 行中的键相同)

【问题讨论】:

  • 只有通过改变你的文档结构来接受你的 newData 对象。您可以将 newData 属性值复制到本地,但对于您的示例来说,这似乎不值得。您可以在 JavaScript 中使用 ([with]developer.mozilla.org/en-US/docs/JavaScript/Reference/…) 语句,但它不会更快,并且在 JS 严格模式下不推荐或支持。

标签: node.js mongodb node-mongodb-native


【解决方案1】:

由于字段名称匹配,您可以直接在$set 中使用newData,如下所示:

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

但是,如果您不验证 newData 包含哪些字段,这可能会将不需要的数据添加到您的任务文档中。

【讨论】:

    猜你喜欢
    • 2013-07-18
    • 2011-04-27
    • 2018-12-11
    相关资源
    最近更新 更多