Her er en (muligvis) bedre mini-tutorial om, hvordan du kommer direkte ind i din MongoDB. Dette løser muligvis ikke dit specifikke problem, men det burde bringe dig så langt som til MongoDB-versionen af SELECT * FROM table .
Først og fremmest vil du have en Mongo::Connection objekt. Hvis du bruger MongoMapper, kan du ringe til connection klassemetode på enhver af dine MongoMapper-modeller for at få en forbindelse, eller spørg MongoMapper om det direkte:
connection = YourMongoModel.connection
connection = MongoMapper.connection
Ellers tror jeg, du ville bruge from_uri konstruktør til at bygge din egen forbindelse.
Så skal du have fingrene i en database, du kan gøre dette ved at bruge array-adgangsnotationen, db metode, eller få den nuværende direkte fra 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.
Nu har du en flot skinnende Mongo::DB instans i dine hænder. Men du vil sandsynligvis have en Collection at gøre noget interessant, og du kan få det ved at bruge enten array-adgangsnotation eller collection metode:
collection = db['collection_name']
collection = db.collection('collection_name')
Nu har du noget, der opfører sig som en SQL-tabel, så du kan count hvor mange ting den har, eller forespørg den ved hjælp af find :
cursor = collection.find(:key => 'value')
cursor = collection.find({:key => 'value'}, :fields => ['just', 'these', 'fields'])
# etc.
Og nu har du det, du virkelig leder efter:en varm ud af ovnen Mongo::Cursor der peger på de data, du er interesseret i. Mongo::Cursor isan Enumerable så du har adgang til alle dine sædvanlige itererende venner, såsom each , first , map , og en af mine personlige favoritter, each_with_object :
a = cursor.each_with_object([]) { |x, a| a.push(mangle(x)) }
Der er også command og eval metoder på Mongo::DB der kan gøre, hvad du vil.