sql >> Databasteknik >  >> NoSQL >> MongoDB

Hur man avfyrar råa MongoDB-frågor direkt i Ruby

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.



  1. Hur frågar man kapslade objekt?

  2. MongoDB $switch

  3. En säkerhetschecklista för MongoDB-produktionsinstallationer

  4. Lägg till en sträng i slutet av ett befintligt fält i MongoDB