MongoDB
 sql >> база данни >  >> NoSQL >> MongoDB

Как да получите максимална и минимална стойност в MongoDB въз основа на конкретен ключ?

Можем да постигнем горния резултат с помощта на заявка за агрегиране.

  • $unwind - за деконструиране на масив от заплата
  • $group - групиране по emp град, държава, име, валута с минимална и максимална стойност на заплата
  • $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. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Самообръщащата се схема на Mongoose не създава ObjectId за всички поддокументи

  2. Как мога да използвам поле от aggregate в regex $match в mongodb?

  3. Актуализиране на елементи в масив

  4. Upsert не работи за updateOne bulkWrite v3.4

  5. Как мога да преименувам колекция в MongoDB?