MongoDB
 sql >> Cơ Sở Dữ Liệu >  >> NoSQL >> MongoDB

Làm thế nào để nhận được Giá trị Tối đa và Tối thiểu trong MongoDB dựa trên khóa cụ thể?

Chúng tôi có thể đạt được kết quả trên bằng cách sử dụng truy vấn tổng hợp.

  • $unwind - để giải cấu trúc mảng lương
  • $group - nhóm theo thành phố, quốc gia, tên, đơn vị tiền tệ với giá trị lương tối thiểu và tối đa
  • $group - sử dụng cái khác để đẩy emp_salary
  • $project - để hiển thị các trường ở định dạng của bạn
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,
      
    }
  }
])

Sân chơi Mongo




  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Làm cách nào để kết nối với MongoDB Atlas bằng Robomongo?

  2. Đảm bảo chỉ mục không hoạt động - MongoDB

  3. Xung đột ReplicaSetId khi thêm nút MongoDB

  4. Có thể thay đổi TimeZone mặc định trong MongoDB bằng Rails 3 không?

  5. Cập nhật và trả lại tài liệu trong Mongodb