sql >> Database teknologi >  >> NoSQL >> MongoDB

Sådan affyres rå MongoDB-forespørgsler direkte i Ruby

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.



  1. Hvordan opretter man et Mongo Docker-billede med standardsamlinger og data?

  2. MongoDB, Mongoose:Hvordan finder man underdokument i fundet dokument?

  3. for mange åbne filer i mgo go server

  4. Geografisk distribuerede MongoDB-replikasæt til 100 % oppetid