Heroku / MongoDB - 如何使用子集合中的值更新所有文档?

时间:2015-12-07 10:16:10

标签: mongodb heroku

我想要实现的是使用另一个字段的值更新集合中所有文档(百万+)的字段。由于在更新中无法引用文档本身,我必须使用一个函数,它可以工作...

db.Sounds.find({}).snapshot().forEach(
  function(sound) {

    var duration = NumberInt(sound.files[0].metadata.duration);

    db.Sounds.update({
      _id: sound._id
    }, {
      $set: {
        duration: duration
      }
    });
  }
);

...但它在Heroku上10分钟后超时,因为它执行速度非常慢(每次更新需要300-400ms),这是由于网络通信造成的。

另一种方法是使用eval运行JavaScript代码服务器端,但“heroku”用户似乎没有足够的权限来运行eval。

有没有解决这些限制的方法?

0 个答案:

没有答案