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

Вземете минимална и максимална стойност в една заявка в mongodb

Можете да опитате по-долу агрегацията

$facet ще ви даде двете най-ниска и най-висока стойност за usages и можете лесно да $project през тях с помощта на $filter оператор

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"]
        }
      }
    }
  }}
])

Или можете просто да направите това с find също и заявка

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] } })

Разгледайте тук




  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Mongodb:избутва елемент към вложен масив, ако условието е изпълнено

  2. 8 начина да получите деня от дата в MongoDB

  3. Преобразуване на mongo масив в обект с двойка ключ-стойност

  4. mongodb:как да актуализирате елемента на масива по номер на индекс

  5. писане на синтаксис на mongoDB