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

mongodbをグループ化する方法-mapReduce出力?

    これを試してください

    db.order.mapReduce(function() { emit (this.customer,{count:1,orderDate:this.orderDate.interval_start}) },
    function(key,values){ 
    var category; // add this new field
    var sum =0 ; var lastOrderDate;  
    values.forEach(function(value) {
     if(value['orderDate']){ 
        lastOrderDate=value['orderDate'];
    }  
    sum+=value['count'];
    }); 
    // at this point you are already aware in which category your records lies , just add a new field to mark it
     if(sum < 5){ category: userLessThan5};
     if(sum >= 5 && sum <=10){ category: user5to10};
     if(sum <= 10 && sum >= 15){ category: user10to15};
     if(sum <= 15 && sum >=20){ category: user15to20};
      ....
    return {count:sum,lastOrderDate:lastOrderDate,category:category}; 
    },
    { query:{status:"DELIVERED"},out:"order_total"}).find()
     db.order_total.aggregate([{ $group: { "_id": "$value.category", "users": { $sum: 1 } } }]);
    

    希望する結果が得られます

    {userLessThan5: 9 }
    {user5to10: 2 }
    {user10to15: 1 }
    {user15to20: 0 }
     ....
    


    1. 同時実行性-スレッドセーフな方法でJavaを介して挿入されたオブジェクトのMongoDBで生成されたIDを取得する

    2. MongoDB-インストールエラー-mongodbセットアップウィザードが途中で終了しました

    3. 実際のMongoDBに対するPythonEveRESTfulAPIのテストの作成

    4. MongoDB $ project:以前のパイプラインフィールドを保持します