2011-11-08 22 views
0

我试图为自己节省很多查询,我使用Mongoose作为ODM。在MongoDB中使用不同值更新记录

我有一个相当大阵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) -> 

在这里,我想“样品”中插入一个新的子文档,这是一个数组,我的文档带有两个属性的对象,日期

虽然日期是每一个我想要更新记录,它不是,可从记录有所不同记录相同。

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

回答

1

多更新根据更新说明符更新所有匹配的文档。如果要用不同的值更新每个文档,则必须为N个文档发布N个更新(或者更准确地说,您将使用N个更新说明符中的每个更新说明符进行N次更新)。例如,如果您的volume小于topic_codes,则可以发出一系列多更新,其中每个更新只涉及那些应具有相同volume的文档,而您已经使用$in

+0

做更新按体积分组数组似乎是一个好主意。 – kain