MongoDB
 sql >> база данни >  >> NoSQL >> MongoDB

Как да задействате необработени заявки на MongoDB директно в Ruby

Ето (евентуално) по-добър мини-урок за това как да влезете директно в вътрешността на вашия MongoDB. Това може да не реши конкретния ви проблем, но трябва да ви стигне до версията на MongoDB на SELECT * FROM table .

На първо място, вие ще искате Mongo::Connection обект. Ако използвате MongoMapper, тогава можете да извикате connection class метод на всеки от вашите модели MongoMapper, за да получите връзка или попитайте MongoMapper директно:

connection = YourMongoModel.connection
connection = MongoMapper.connection

В противен случай предполагам, че бихте използвали from_uri конструктор, за да изградите своя собствена връзка.

След това трябва да се захванете с база данни, можете да направите това, като използвате нотацията за достъп до масива, db метод или вземете текущия направо от 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.

Сега имате хубав лъскав Mongo::DB екземпляр във вашите ръце. Но вероятно искате Collection за да направите нещо интересно и можете да го получите с помощта на нотация за достъп до масив или Collection метод:

collection = db['collection_name']
collection = db.collection('collection_name')

Сега имате нещо, което се държи като SQL таблица, така че можете да count колко неща има или го потърсете с помощта на find :

cursor = collection.find(:key => 'value')
cursor = collection.find({:key => 'value'}, :fields => ['just', 'these', 'fields'])
# etc.

И сега имате това, което наистина търсите:горещо от фурната Mongo::Cursor който сочи към данните, които ви интересуват. Mongo::Cursor isan Enumerable така че имате достъп до всичките си обичайни итерации, като each , first , map , и един от моите лични любими, each_with_object :

a = cursor.each_with_object([]) { |x, a| a.push(mangle(x)) }

Има и command и eval методи на Mongo::DB това може да направи това, което искате.



  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. findOne поддокумент в Mongoose

  2. MongoDB Object.bsonSize()

  3. Ръководство за разработчици за MongoDB Sharding

  4. Как да избегнем transparent_hugepage/defrag предупреждение от mongodb?

  5. Премахнете дубликатите от MongoDB