Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/mongodb/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mongodb 获取第100行时遇到延迟_Mongodb_Mongodb Ruby - Fatal编程技术网

Mongodb 获取第100行时遇到延迟

Mongodb 获取第100行时遇到延迟,mongodb,mongodb-ruby,Mongodb,Mongodb Ruby,我正在从集合中获取所有行,并在第100行体验延迟。我知道find方法返回cursor,而不是所有的数据,并且在某个点需要获取更多的数据。但第100排是唯一的延迟 Checking images 99 Checking image 100 *pause* Checking image 101 然后,在没有可见延迟的情况下,最多可拍摄10万张图像 使用的ruby脚本: require 'mongo' time_start = Time.now mongo = Mongo::MongoClien

我正在从集合中获取所有行,并在第100行体验延迟。我知道find方法返回cursor,而不是所有的数据,并且在某个点需要获取更多的数据。但第100排是唯一的延迟

Checking images 99
Checking image 100
*pause*
Checking image 101
然后,在没有可见延迟的情况下,最多可拍摄10万张图像

使用的ruby脚本:

require 'mongo'

time_start = Time.now

mongo = Mongo::MongoClient.new("localhost", 27017)

db = mongo["pics"]

images = db["images"]
albums = db["albums"]

orphans = []

images.find().each do |row|
    puts "Checking image #{row['_id']}"
end

# puts orphans
time_end = Time.now
puts "Total time taken: #{time_end - time_start}"

mongoimport--db pics--collection images file\u name

问题是:

  • 是否有一些数据与初始光标一起出现
  • 为什么唯一的延误是在第100排?也许我错过了一些东西,但我甚至看不到IO在这一点上阅读

谢谢

MongoDB光标的默认“批量大小”为100个对象。意味着MongoDB在获取下一批之前获取100个对象……这就是为什么会出现延迟。所有驱动程序都应该在游标对象上提供“batch_size()”或类似的方法来设置和检索批大小。

你说得对。将batch_size设置为500可使其平滑<代码>图像。查找()。批量大小(500)。每个。同样使用
mongostat
我已经检查了默认情况下,在第100行,它向我发送3mb的数据,这是导致打嗝的原因。