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

Mongodbオブジェクトを集約することは可能ですか?

    配列ではなくオブジェクトに値があるため、mapReduceを使用する必要があります。

    // Emit the values as integers
    
    var mapFunction = 
      function() {
        for (key in this.packets) {
          emit(null, parseInt(this.packets[key]));
        }
      }
    
    // Reduce to a simple sum
    
    var reduceFunction = 
      function(key, values) {
        return Array.sum(values);
      }
    
    > db.collection.mapReduce(mapFunction, reduceFunction, {out: {inline:1}})
    {
        "results" : [
            {
                "_id" : null,
                "value" : 2381
            }
        ],
        "ok" : 1,
    }
    

    可能であれば、代わりに数値型の配列として値を出力する必要があります。これにより、より多くのオプション(つまり、集計)が提供され、(データセットが大きい場合を除いて)パフォーマンスが向上する可能性があります。



    1. mongodbのバウンディングボックス内のアイテム(Point、LineString、Polygon)を取得する方法

    2. 上記のエントリを再検討するか、構成で「org.springframework.data.redis.core.RedisTemplate」タイプのBeanを定義することを検討してください。

    3. Mongoid Associationが(不要な)レコードを作成する

    4. .insertOneは関数ではありません