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.