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

MongoDB$count集約演算子

    MongoDBでは、$count 集約演算子は、現在のステージに入力されたドキュメントの数のカウントを含む、集約パイプラインの次のステージにドキュメントを渡します。

    petsというコレクションがあるとします。 次のドキュメントを使用:

    { "_id" : 1, "name" : "Wag", "type" : "Dog", "weight" : 20 }
    { "_id" : 2, "name" : "Bark", "type" : "Dog", "weight" : 10 }
    { "_id" : 3, "name" : "Meow", "type" : "Cat", "weight" : 7 }
    { "_id" : 4, "name" : "Scratch", "type" : "Cat", "weight" : 8 }
    { "_id" : 5, "name" : "Bruce", "type" : "Bat", "weight" : 3 }
    { "_id" : 6, "name" : "Fetch", "type" : "Dog", "weight" : 17 }
    { "_id" : 7, "name" : "Jake", "type" : "Dog", "weight" : 30 }

    次の集計操作を使用して、コレクション内の犬の数を数えることができます。

    db.pets.aggregate([
        {
          $match: { type: "Dog" }
        },
        {
          $count: "DogCount"
        }
    ])

    結果:

    { "DogCount" : 4 }

    集約パイプラインが機能する方法は、ステージで構成されていることです。各パイプラインステージは、次のステージへの入力を提供します。

    したがって、上記の例では、最初の段階でコレクションがtypeを持つドキュメントのみにフィルターされました。 dogの 。第2段階では、それらのドキュメントを取得してカウントし、結果を次のステージに渡しました。それがパイプラインの最後の段階であったことを考えると、出力が表示されました。

    グループ化されたドキュメントのカウント

    これは、$group集計演算子と$countを組み合わせて、特定の体重のペットの各タイプのカウントを返す例です。

    db.pets.aggregate([
        {
          $match: { weight: { $lt: 30 } }
        },
        {
          $group: { _id: "$type", count: { $sum: 1 } }
        }
    ])

    結果:

    { "_id" : "Cat", "count" : 2 }
    { "_id" : "Bat", "count" : 1 }
    { "_id" : "Dog", "count" : 3 }

    パイプラインステージを追加する

    この例では、パイプラインステージを追加して結果を並べ替えます。特に、$sortを使用します これを行う演算子。

    db.pets.aggregate([
        {
          $match: { weight: { $lt: 30 } }
        },
        {
          $group: { _id: "$type", count: { $sum: 1 } }
        },
         { 
          $sort : { count : -1, _id: 1 } 
        }
    ])

    結果:

    { "_id" : "Dog", "count" : 3 }
    { "_id" : "Cat", "count" : 2 }
    { "_id" : "Bat", "count" : 1 }

    この場合、カウントを降順で並べ替えました(-1 降順を指定します)、次に_id 昇順(1 昇順を指定します。

    詳細情報

    詳細については、MongoDBのドキュメントを参照してください。


    1. データ構造が増大するMongoDBのパフォーマンス

    2. MongoDBはサーバーを起動できません:デフォルトのストレージエンジン「wiredTiger」は、このビルドのmongodでは使用できません

    3. JedisによるRedisキーの有効期限の通知

    4. mongodbの配列内のすべての要素からフィールドを削除します