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

コレクション内のすべてのキーに対してmapreduceを実行します-mongodb

    その単純なタスクにmap/reduceを使用することは、(比較的遅い)スレッジハンマーを使用してナットを割るのと少し似ています。 集約フレームワーク 基本的に、この種の単純な集計のために発明されました(そして、さらに多くのことができます!):

    db.order.aggregate([
        { "$group":{ "_id":"$customer", "orders":{ "$sum": 1 }}},
        { "$out": "order_total"}
    ])
    

    ユースケースによっては、$outを省略することもできます 結果を直接ステージングして消費します。

    > db.orders.aggregate([{ "$group":{ "_id":"$customer", "orders":{ "$sum": 1 }}}])
    { "_id" : "b", "orders" : 2 }
    { "_id" : "a", "orders" : 3 }
    

    コレクションが非常に大きい場合は、時間がかかるため、これは適切ではない可能性が高いことに注意してください(ただし、map / reduce操作よりも高速である必要があります)。

    1人の顧客の注文数を見つけるには、簡単なクエリを使用して、 cursor.count() 方法:

    > db.orders.find({ "customer": "a" }).count()
    3
    



    1. Mongoインターフェース

    2. OpenShiftおよびmongorestoreからMongoDB2.4.9でローカルにmongodumpする方法は?

    3. mongodbサーバー側のJavaScriptは実際にはクライアント側ですか?

    4. Node.jsとasync.queueを使用してMongoDBに大きなCSVを挿入する