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.