Här är en (möjligen) bättre mini-tutorial om hur du kommer direkt in i din MongoDB. Det här kanske inte löser ditt specifika problem men det borde ta dig så långt som MongoDB-versionen av SELECT * FROM table
.
Först och främst vill du ha en Mongo::Connection
objekt. Om du använder MongoMapper kan du ringa connection
klassmetoden på någon av dina MongoMapper-modeller för att få en anslutning eller be MongoMapper om det direkt:
connection = YourMongoModel.connection
connection = MongoMapper.connection
Annars antar jag att du skulle använda from_uri
konstruktör för att bygga din egen anslutning.
Sedan måste du lägga vantarna på en databas, du kan göra detta med hjälp av array-åtkomstnotationen, db
metod, eller hämta den nuvarande direkt från 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 fin glänsande Mongo::DB
instans i dina händer. Men du vill förmodligen ha en Collection
för att göra något intressant och du kan få det med antingen array-åtkomstnotation eller collection
metod:
collection = db['collection_name']
collection = db.collection('collection_name')
Nu har du något som beter sig som en SQL-tabell så att du kan count
hur många saker den har eller fråga den med find
:
cursor = collection.find(:key => 'value')
cursor = collection.find({:key => 'value'}, :fields => ['just', 'these', 'fields'])
# etc.
Och nu har du det du verkligen är ute efter:en varm ut ur ugnen Mongo::Cursor
som pekar på den information du är intresserad av. Mongo::Cursor
isan Enumerable
så att du har tillgång till alla dina vanliga itererande vänner som each
, first
, map
, och en av mina personliga favoriter, each_with_object
:
a = cursor.each_with_object([]) { |x, a| a.push(mangle(x)) }
Det finns också command
och eval
metoder på Mongo::DB
som kanske gör vad du vill.