Aquí hay un minitutorial (posiblemente) mejor sobre cómo llegar directamente a las entrañas de su MongoDB. Es posible que esto no resuelva su problema específico, pero debería llevarlo a la versión MongoDB de SELECT * FROM table .
En primer lugar, querrás una Mongo::Connection objeto. Si está utilizando MongoMapper, puede llamar a la connection método de clase en cualquiera de sus modelos MongoMapper para obtener una conexión o solicitarla directamente a MongoMapper:
connection = YourMongoModel.connection
connection = MongoMapper.connection
De lo contrario, supongo que usarías el from_uri constructor para construir su propia conexión.
Entonces necesita tener en sus manos una base de datos, puede hacerlo usando la notación de acceso a la matriz, el db u obtenga el actual directamente de MongoMapper:
db = connection['database_name'] # This does not support options.
db = connection.db('database_name') # This does support options.
db = MongoMapper.database # This should be configured like
# the rest of your app.
Ahora tienes un lindo y brillante Mongo::DB instancia en tus manos. Pero, probablemente quieras una Collection para hacer algo interesante y puede obtenerlo usando la notación de acceso a la matriz o la collection método:
collection = db['collection_name']
collection = db.collection('collection_name')
Ahora tiene algo que se comporta como una tabla SQL para que pueda count cuántas cosas tiene o consulta usando find :
cursor = collection.find(:key => 'value')
cursor = collection.find({:key => 'value'}, :fields => ['just', 'these', 'fields'])
# etc.
Y ahora tienes lo que realmente buscas:algo recién salido del horno Mongo::Cursor que apunta a los datos que le interesan. Mongo::Cursor es un Enumerable para que tenga acceso a todos sus iteratingfriends habituales, como each , first , map , y uno de mis favoritos personales, each_with_object :
a = cursor.each_with_object([]) { |x, a| a.push(mangle(x)) }
También hay command y eval métodos en Mongo::DB eso podría hacer lo que quieras.