MongoDB
 sql >> Baza danych >  >> NoSQL >> MongoDB

Jak uzyskać Max i Min Value w MongoDB w oparciu o konkretny klucz?

Powyższy wynik możemy osiągnąć za pomocą zapytania agregującego.

  • $unwind - zdekonstruować tablicę wynagrodzeń
  • $group - grupuj według miasta emp, kraju, nazwy, waluty z minimalną i maksymalną wartością wynagrodzenia
  • $group - użyj innego, aby wcisnąć emp_salary
  • $project - aby pokazać pola w twoim formacie
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. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. MongoDB:jak policzyć liczbę kluczy w dokumencie?

  2. mongodb findOne z wyjaśnieniem

  3. Przestarzały analizator treści?

  4. Projektowanie schematu MongoDB:zawsze istnieje schemat

  5. Jak zaktualizować dokument Mongo po wstawieniu?