Ecco un mini-tutorial (forse) migliore su come entrare direttamente nelle viscere del tuo MongoDB. Questo potrebbe non risolvere il tuo problema specifico, ma dovrebbe portarti fino alla versione MongoDB di SELECT * FROM table .
Prima di tutto, vorrai un Mongo::Connection oggetto. Se stai usando MongoMapper, puoi chiamare la connection class su uno qualsiasi dei tuoi modelli MongoMapper per ottenere una connessione o chiedilo direttamente a MongoMapper:
connection = YourMongoModel.connection
connection = MongoMapper.connection
Altrimenti immagino che useresti from_uri costruttore per creare la tua connessione.
Quindi devi mettere le mani su un database, puoi farlo usando la notazione di accesso all'array, il db metodo o ottieni quello corrente direttamente da 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.
Ora hai un bel brillante Mongo::DB istanza nelle tue mani. Ma probabilmente vorrai una Collection per fare qualcosa di interessante e puoi ottenerlo usando la notazione di accesso all'array o la collection metodo:
collection = db['collection_name']
collection = db.collection('collection_name')
Ora hai qualcosa che si comporta come una tabella SQL in modo da poter count quante cose ha o interrogalo usando find :
cursor = collection.find(:key => 'value')
cursor = collection.find({:key => 'value'}, :fields => ['just', 'these', 'fields'])
# etc.
E ora hai quello che cerchi davvero:un caldo fuori dal forno Mongo::Cursor che punta ai dati che ti interessano. Mongo::Cursor è un Enumerable così hai accesso a tutti i tuoi soliti amici iterativi come each , first , map e uno dei miei preferiti personali, each_with_object :
a = cursor.each_with_object([]) { |x, a| a.push(mangle(x)) }
Ci sono anche command e eval metodi su Mongo::DB potrebbe fare quello che vuoi.