首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Mongo / Ruby驱动程序一次输出特定数量的文档?

Mongo / Ruby驱动程序一次输出特定数量的文档?
EN

Stack Overflow用户
提问于 2013-01-31 04:45:13
回答 1查看 209关注 0票数 0

鲁比·蒙戈司机的问题:

如何一次从集合输出5_000文档批次,直到读取集合中的最后一个文档,而不首先将整个数据库转储到内存中?

这对我来说真是个坏主意。

代码语言:javascript
运行
复制
mongo = MongoClient.new('localhost', 27017)['sampledb']['samplecoll']
@whois.find.to_a....
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-01-31 17:52:25

Mongo::Collection#find返回可枚举的Mongo::游标。对于批处理,Enumerable#each_slice是您的朋友,非常值得添加到您的工具包中。

希望你喜欢这个。

find_each_slice_test.rb

代码语言:javascript
运行
复制
require 'mongo'
require 'test/unit'

class FindEachSliceTest < Test::Unit::TestCase
  def setup
    @samplecoll = Mongo::MongoClient.new('localhost', 27017)['sampledb']['samplecoll']
    @samplecoll.remove
  end

  def test_find_each_slice
    12345.times{|i| @samplecoll.insert( { i: i } ) }
    slice__max_size = 5000
    @samplecoll.find.each_slice(slice__max_size) do |slice|
      puts "slice.size: #{slice.size}"
      assert(slice__max_size >= slice.size)
    end
  end
end

红宝石find_each_slice_test.rb

代码语言:javascript
运行
复制
Run options: 

# Running tests:

slice.size: 5000
slice.size: 5000
slice.size: 2345
.

Finished tests in 6.979301s, 0.1433 tests/s, 0.4298 assertions/s.

1 tests, 3 assertions, 0 failures, 0 errors, 0 skips
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/14618647

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档