sql >> Databasteknik >  >> NoSQL >> MongoDB

MongoDB, Flask, aggregat med $unwind-fråga

Du kan uppnå det genom att använda en $unwind och sedan en $group med $push , så här:

db.pitcrewdb.aggregate([
  {
    "$match": {
      "run_number": "1",
      "frames.frame_number": {
        "$gte": 2
      }
    }
  },
  {
    "$project": {
      "_id": 0
    }
  },
  {
    "$unwind": "$frames"
  },
  {
    "$match": {
      "frames.frame_number": {
        "$gte": 2
      }
    }
  },
  {
    "$group": {
      "_id": "$run_number",
      "frames": {
        "$push": "$frames"
      }
    }
  }
])

$unwind kommer att förstöra din array och sedan filtrerar du resultaten och efter $group dem igen

Eller så kan du också göra det med $filter

db.pitcrewdb.aggregate([
  {
    "$match": {
      "run_number": "1"
    }
  },
  {
    "$project": {
      "_id": 0,
      "frames": {
        $filter: {
          input: "$frames",
          as: "frame",
          cond: {
            $gte: [
              "$$frame.frame_number",
              2
            ]
          }
        }
      }
    }
  }
])



  1. Åldras automatiskt MongoDB Collection Documents

  2. Hur man frågar ett relativt element med MongoDB

  3. MongoDB - Skapa en säkerhetskopia

  4. Mongoose Query för att filtrera en array och fylla i relaterat innehåll