sql >> データベース >  >> NoSQL >> MongoDB

生のMongoDBクエリをRubyで直接起動する方法

    これは、MongoDBの内臓に直接入る方法に関する(おそらく)より良いミニチュートリアルです。これでは特定の問題が解決しない場合がありますが、MongoDBバージョンのSELECT * FROM tableまでは到達するはずです。 。

    まず、Mongo::Connectionが必要になります 物体。 MongoMapperを使用している場合は、connectionを呼び出すことができます いずれかの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 isanEnumerable そのため、eachなどの通常の反復友達すべてにアクセスできます。 、firstmap 、そして私の個人的なお気に入りの1つ、each_with_object

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

    commandもあります およびeval Mongo::DBのメソッド それはあなたが望むことをするかもしれません。



    1. MISCONF Redisは、RDBスナップショットを保存するように構成されています

    2. 期間ではなく特定の時間にredisキャッシュキーを期限切れにする

    3. mongodb接続文字列で@を処理します

    4. 接続ごとに新しいRedisクライアントを作成する必要がありますか?