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

Монго филтър масив от масив от масив

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

По принцип трябва да преминете през всеки масив, като използвате $map агрегиране и накрая използвайте $filter с последния.

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

Изход

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



  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Как да използвате pollingThrottle и pollingInterval?

  2. Заявка към mongodb за връщане на документи, създадени днес

  3. Атомност на findAndModify на вградени документи

  4. Как да направите заявка с помощта на dot( . ) през Mongoose в Node.js и как да добавите празен масив

  5. Извличане на конкретния MongoDB ключ от DuplicateKeyException, който всъщност е дублиран (Java/Spring)