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

特定のキーに基づいてMongoDBで最大値と最小値を取得するにはどうすればよいですか?

    集計クエリを使用して上記の結果を得ることができます。

    • $unwind -給与の配列を分解する
    • $group -従業員の都市、国、名前、通貨、給与の最小値と最大値でグループ化します
    • $group -別のものを使用してemp_salaryをプッシュします
    • $project -フィールドを自分のフォーマットで表示するには
    db.collection.aggregate([
      {
        "$unwind": {
          "path": "$data"
        }
      },
      {
        "$unwind": {
          "path": "$data.salary"
        }
      },
      {
        "$group": {
          "_id": {
            "emp_city": "$data.emp_city",
            "emp_country": "$data.emp_country",
            "emp_name": "$emp_name",
            "currency": "$data.salary.currency",
            
          },
          "max": {
            "$max": "$data.salary.amount"
          },
          "min": {
            "$min": "$data.salary.amount"
          }
        }
      },
      {
        "$group": {
          "_id": {
            "emp_city": "$_id.emp_city",
            "emp_country": "$_id.emp_country",
            "emp_name": "$_id.emp_name",
            
          },
          "emp_salary": {
            "$push": {
              "currency": "$_id.currency",
              "min": "$min",
              "max": "$max"
            }
          }
        }
      },
      {
        "$project": {
          "_id": 0,
          "emp_city": "$_id.emp_city",
          "emp_country": "$_id.emp_country",
          "emp_name": "$_id.emp_name",
          "emp_salary": 1,
          
        }
      }
    ])
    

    Mongo Playground




    1. コレクションのドキュメント内のさまざまなサブタイプの集約

    2. マングースと非同期ウォーターフォールモデルを使用してMongoDbにデータを保存する方法

    3. bashスクリプトを介してMongoコマンドを実行すると、クエリの実行に失敗しました

    4. mongodbidからタイムスタンプを取得する