sql >> データベース >  >> NoSQL >> MongoDB

mongodbの単一クエリで最小値と最大値を取得します

    以下の集計を試すことができます

    $facet usagesの最低値と最高値の2つが表示されます 簡単に $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. Mongodb集計:日付を別のタイムゾーンに変換します

    2. MongoDBの--restオプションはどこに追加すればよいですか?

    3. pymongo update_one()、upsert =$演算子を使用せずにTrue

    4. PyMongoのMapReduce