批量调用以保存mongoid中的“新”对象

时间:2011-06-08 23:26:19

标签: ruby mongodb mongoid

  1. 大量对象被初始化(Photo.new)。
  2. 对Photo数组进行了一些过滤,因此剩下30%。
  3. 剩下的数组会在一次通话中保存。
  4. 问题

    1. 执行第3步的命令是什么,实际上是批量保存?
    2. 我可以一次保存多少个对象?

2 个答案:

答案 0 :(得分:3)

我不熟悉Ruby Mongoid驱动程序,但看起来你正在寻找类似的东西:

photos.map &:save

如果您尝试以较少的迭代方式(即在单个调用中)执行此操作,则看起来Ruby Mongoid驱动程序支持insert方法来保存哈希数组:

Photo.collection.insert(photos)

来源:Batch insert/update using Mongoid?

答案 1 :(得分:1)

是的,有一个限制。使用刚刚描述的方法coreyward批量插入的所有内容都应在16M(MongoDB的文档大小限制)内。看这里:

https://github.com/mongodb/mongo-ruby-driver/commit/4712a684689c11a31221c87354e5ae0864960226

因此,您应该估计数组的字节大小,如果超过16M,则将其分成几个部分。