sql >> Databáze >  >> NoSQL >> MongoDB

Jak spouštět surové MongoDB dotazy přímo v Ruby

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.



  1. Případy použití pro skóre Redis a funkce hodnocení pro sady

  2. jak iterovat mongo kurzor ve smyčce v pythonu

  3. Hadoop ekosystém – Úvod do Hadoop komponent

  4. Operátor agregačního potrubí MongoDB $lt