sql >> Database teknologi >  >> NoSQL >> MongoDB

Mongo filter array af array af array

Du kan prøve nedenstående aggregering

Dybest set skal du løkke over hvert array ved hjælp af $map aggregering, og brug endelig $filter med den sidste.

db.collection.aggregate([
  { "$project": {
    "array1": {
      "$map": {
        "input": "$array1",
        "as": "a1",
        "in": {
          "array2": {
            "$map": {
              "input": "$$a1.array2",
              "as": "a2",
              "in": {
                "array3": {
                  "$filter": {
                    "input": "$$a2.array3",
                    "as": "a3",
                    "cond": { "$lte": ["$$a3.sampleId", 2] }
                  }
                }
              }
            }
          }
        }
      }
    }
  }}
])
 

Output

[ { "array1": [ { "array2": [ { "array3": [ { "sampleId": 1 }, { "sampleId": 2 } ] }, { "array3": [] } ] }, { "array2": [ { "array3": [ { "sampleId": 1 } ] } ] } ] } ]


  1. Looping Array og kontrol af MongoDB-samling i loop (Async)

  2. Ugyldig operator '$size' i aggregering

  3. Læsning af DBname.system.indexes mislykkedes på Atlas-klyngen af ​​mongobee efter oprettelse af forbindelse

  4. Hvordan bruger jeg en guide i en mongodb shell-forespørgsel