我正在努力为自己节省很多疑问,我使用的是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 和卷。
虽然日期对于我想要更新的每条记录都是相同的,但音量它不是,并且可能因记录而异。
有没有办法实现我的目标而不必经历庞大的数据库命中?
答案 0 :(得分:1)
多重更新根据更新说明符更新所有匹配的文档。如果要使用不同的值更新每个文档,则必须为N个文档发出N个更新(或者更确切地说,为将要使用的每个N个更新说明符发布N个更新)。例如,如果volume
比topic_codes
少得多,则可以发出一系列多次更新,其中每次更新仅触及那些应具有相同volume
的文档,使用$in
就像你现在一样。