How to fire raw MongoDB queries directly in Ruby -
is there way can fire raw mongo query directly in ruby instead of converting them native ruby objects?
i went through ruby mongo tutorial, cannot find such method anywhere.
if mysql, have fired query this.
activerecord::base.connection.execute("select * foo")
my mongo query bit large , executing in mongodb console. want directly execute same inside ruby code.
here's (possibly) better mini-tutorial on how directly guts of mongodb. might not solve specific problem should far mongodb version of select * table
.
first of all, you'll want mongo::connection
object. if you're using mongomapper can call connection
class method on of mongomapper models connection or ask mongomapper directly:
connection = yourmongomodel.connection connection = mongomapper.connection
otherwise guess you'd use from_uri
constructor build own connection.
then need hands on database, can using array access notation, db
method, or current 1 straight mongomapper:
db = connection['database_name'] # not support options. db = connection.db('database_name') # support options. db = mongomapper.database # should configured # rest of app.
now have nice shiny mongo::db
instance in hands. but, want collection
interesting , can using either array access notation or collection
method:
collection = db['collection_name'] collection = db.collection('collection_name')
now have behaves sort of sql table can count
how many things has or query using find
:
cursor = collection.find(:key => 'value') cursor = collection.find({:key => 'value'}, :fields => ['just', 'these', 'fields']) # etc.
and have you're after: hot out of oven mongo::cursor
points @ data you're interested in. mongo::cursor
enumerable
have access usual iterating friends such each
, first
, map
, , 1 of personal favorites, each_with_object
:
a = cursor.each_with_object([]) { |x, a| a.push(mangle(x)) }
Comments
Post a Comment