mongo-ruby-driver/examples/cursor.rb

48 lines
1.2 KiB
Ruby

$LOAD_PATH[0,0] = File.join(File.dirname(__FILE__), '..', 'lib')
require 'mongo'
require 'pp'
include XGen::Mongo::Driver
host = ENV['MONGO_RUBY_DRIVER_HOST'] || 'localhost'
port = ENV['MONGO_RUBY_DRIVER_PORT'] || XGen::Mongo::Driver::Mongo::DEFAULT_PORT
puts "Connecting to #{host}:#{port}"
db = Mongo.new(host, port).db('ruby-mongo-examples')
coll = db.collection('test')
# Erase all records from collection, if any
coll.clear
# Insert 3 records
3.times { |i| coll.insert({'a' => i+1}) }
# Cursors don't run their queries until you actually attempt to retrieve data
# from them.
# Find returns a Cursor, which is Enumerable. You can iterate:
coll.find().each { |row| pp row }
# You can turn it into an array
array = coll.find().to_a
# You can iterate after turning it into an array (the cursor will iterate over
# the copy of the array that it saves internally.)
cursor = coll.find()
array = cursor.to_a
cursor.each { |row| pp row }
# You can get the next object
first_object = coll.find().next_object
# next_object returns nil if there are no more objects that match
cursor = coll.find()
obj = cursor.next_object
while obj
pp obj
obj = cursor.next_object
end
# Destroy the collection
coll.drop