Zde je (možná) lepší mini návod, jak se dostat přímo do útrob vašeho MongoDB. To nemusí vyřešit váš konkrétní problém, ale mělo by vás to dostat až k verzi MongoDB SELECT * FROM table
.
Nejprve budete chtít Mongo::Connection
objekt. Pokud používáte MongoMapper, můžete zavolat connection
class na kterémkoli z vašich modelů MongoMapper, abyste získali připojení, nebo o něj přímo požádejte MongoMapper:
connection = YourMongoModel.connection
connection = MongoMapper.connection
Jinak předpokládám, že byste použili from_uri
konstruktor k vytvoření vlastního připojení.
Pak se musíte dostat k databázi, můžete to udělat pomocí zápisu přístupu k poli, db
nebo získejte aktuální přímo z 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.
Nyní máte pěkný lesklý Mongo::DB
instance ve vašich rukou. Pravděpodobně však budete chtít Collection
dělat cokoliv zajímavého a můžete to získat buď pomocí zápisu přístupu k poli nebo pomocí collection
metoda:
collection = db['collection_name']
collection = db.collection('collection_name')
Nyní máte něco, co se chová jako SQL tabulka, takže můžete count
kolik věcí má nebo se na něj zeptejte pomocí find
:
cursor = collection.find(:key => 'value')
cursor = collection.find({:key => 'value'}, :fields => ['just', 'these', 'fields'])
# etc.
A teď máte to, po čem opravdu toužíte:horko z trouby Mongo::Cursor
která ukazuje na data, která vás zajímají. Mongo::Cursor
isan Enumerable
takže máte přístup ke všem svým obvyklým iterujícím přátelům, jako je each
, first
, map
a jeden z mých osobních oblíbených, each_with_object
:
a = cursor.each_with_object([]) { |x, a| a.push(mangle(x)) }
Existují také command
a eval
metody na Mongo::DB
to může dělat, co chcete.