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

Tổng hợp Mongodb:$ Reduce không hoạt động như mong đợi

  • $max để nhận giá trị tối đa từ key mảng trường a , điều này sẽ trả về -15 theo tài liệu của bạn
  • $filter để lấy đối tượng bằng -15 giá trị
  • $first lấy đối tượng đầu tiên từ kết quả trả về từ $filter
db.collection.aggregate([
  {
    $addFields: {
      winner: {
        $first: {
          $filter: {
            input: "$key",
            cond: { $eq: ["$$this.a", { $max: "$key.a" }] }
          }
        }
      }
    }
  }
])

Sân chơi

Tùy chọn thứ hai sử dụng $reduce nhà điều hành,

  • đặt trường ban đầu maxValue giảm, giá trị lớn nhất từ ​​key mảng trường a
  • kiểm tra điều kiện nếu maxValuea đối sánh giá trị rồi trả về đối tượng tối đa
db.collection.aggregate([
  {
    $addFields: {
      winner: {
        $reduce: {
          input: "$key",
          initialValue: { maxValue: { $max: "$key.a" } },
          in: {
            $cond: [
              { $eq: ["$$this.a", "$$value.maxValue"] },
              "$$this",
              "$$value"
            ]
          }
        }
      }
    }
  }
])

Sân chơi




  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Cần một giải pháp thay thế để tra cứu một chuỗi thành objectID ForeignField

  2. Phương thức Meteor so với quy tắc từ chối / cho phép

  3. Bất kỳ lý do chi tiết và cụ thể nào cho việc Tại sao MongoDB nhanh hơn nhiều so với SQL DBs?

  4. Mối quan tâm về ghi mongod mặc định trong phiên bản nào?

  5. MongoDB - dải các ký tự không phải số trong trường