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.