我从集合中获取所有行并在第100行遇到延迟。我知道find方法返回游标而不是前面的所有数据,在某一点上需要获取更多数据。但第100行是唯一的延迟。
Checking images 99
Checking image 100
*pause*
Checking image 101
然后没有可见的延迟达到100 000张图像。
二手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_name
问题是:
谢谢
答案 0 :(得分:4)
MongoDB游标的默认“批量大小”是100个对象。意味着MongoDB在获取下一批之前获取100个对象...这就是您看到延迟的原因。所有驱动程序都应在游标对象上提供方法“batch_size()”或类似方法,以设置和检索批量大小。