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

Nhận giá trị tối thiểu và giá trị tối đa trong một truy vấn duy nhất trong mongodb

Bạn có thể thử tổng hợp bên dưới

$facet sẽ cung cấp cho bạn hai giá trị thấp nhất và cao nhất cho usages và bạn có thể dễ dàng $project thông qua chúng bằng cách sử dụng $filter nhà điều hành

db.collection.aggregate([
  { "$facet": {
    "minUsages": [{ "$sort": { "usages": -1 } }],
    "maxUsages": [{ "$sort": { "usages": 1 } }]
  }},
  { "$addFields": {
    "lowestUsages": {
      "$arrayElemAt": ["$minUsages", 0]
    },
    "highestUsages": {
      "$arrayElemAt": ["$maxUsages", 0]
    }
  }},
  { "$project": {
    "minUsages": {
      "$filter": {
        "input": "$minUsages",
        "as": "minUsage",
        "cond": {
          "$eq": ["$$minUsage.usages", "$lowestUsages.usages"]
        }
      }
    },
    "maxUsages": {
      "$filter": {
        "input": "$maxUsages",
        "as": "maxUsage",
        "cond": {
          "$eq": ["$$maxUsage.usages", "$highestUsages.usages"]
        }
      }
    }
  }}
])

Hoặc bạn có thể thực hiện việc này đơn giản với find cả truy vấn

const minUsage = await db.collection.find({}).sort({ "usages": -1 }).limit(1)
const maxUsage = await db.collection.find({}).sort({ "usages": 1 }).limit(1)

const minUsages = await db.collection.find({ "usages": { "$in": [minUsages[0].usages] } })
const maxUsages = await db.collection.find({ "usages": { "$in": [maxUsages[0].usages] } })

Hãy xem tại đây




  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Tại sao triển khai java bson sử dụng trường inc 4 byte?

  2. Bạn nhầm lẫn về thuật ngữ Mongoose / Mongo. Tài liệu phụ / Tài liệu nhúng có phải cũng là Bộ sưu tập không?

  3. Di chuyển dữ liệu từ PostgreSQL sang MongoDB

  4. MongoDB - cấu trúc con và cha mẹ

  5. Lỗi mongod vùng chứa Docker khi bắt đầu qua ssh