在MongoDB中更新具有不同值的记录

时间:2011-11-08 02:27:31

标签: mongodb node.js mongoose

我正在努力为自己节省很多疑问,我使用的是Mongoose作为ODM。

我有一个相当大的数组topic_codes,比如50k +元素,我正在做这个(CoffeeScript):

  conditions = code: $in: topic_codes
  update     = $push: samples: date: point_in_time, volume: ??
  options    = multi: true
  TopicArchive.update conditions, update, options, (err) ->

这里我尝试在我的文档的' samples '中插入一个新的子文档,这是一个数组,其中包含一个具有两个属性的对象, date

虽然日期对于我想要更新的每条记录都是相同的,但音量它不是,并且可能因记录而异。

有没有办法实现我的目标而不必经历庞大的数据库命中?

1 个答案:

答案 0 :(得分:1)

多重更新根据更新说明符更新所有匹配的文档。如果要使用不同的值更新每个文档,则必须为N个文档发出N个更新(或者更确切地说,为将要使用的每个N个更新说明符发布N个更新)。例如,如果volumetopic_codes少得多,则可以发出一系列多次更新,其中每次更新仅触及那些应具有相同volume的文档,使用$in就像你现在一样。