MongoDB
 sql >> Baza danych >  >> NoSQL >> MongoDB

$filtruj do 2 zagnieżdżonych poziomów w mongodb

Musisz $unwind pierwszą tablicę możesz łatwo zastosować $filter w zagnieżdżonej tablicy

db.collection.aggregate([
  { "$unwind": "$Hospitais" },
  { "$match": { "Hospitais.nome": "Dorio Silva" } },
  { "$project": {
    "Hospitais": {
      "$filter": {
        "input": "$Hospitais.utis",
        "as": "uti",
        "cond": {
          "$eq": ["$$uti.nome", "UTI1"]
        }
      }
    }
  }}
])

Możesz też tego spróbować

db.collection.aggregate([
  { "$match": { "Hospitais.nome": "Dorio Silva" } },
  { "$project": {
    "Hospitais": {
      "$filter": {
        "input": {
          "$map": {
            "input": "$Hospitais",
            "as": "hospital",
            "in": {
              "nome": "$$hospital.nome",
              "utis": {
                "$filter": {
                  "input": "$$hospital.utis",
                  "as": "uti",
                  "cond": {
                    "$eq": ["$$uti.nome", "UTI1"]
                  }
                }
              }
            }
          }
        },
        "as": "hospital",
        "cond": {
          "$eq": ["$$hospital.nome", "Dorio Silva"]
        }
      }
    }
  }}
])

Obie dadzą podobny wynik

[
  {
    "Hospitais": [
      {
        "_id": 893910,
        "leitos": [
          {
            "_id": 1.2893812e+08,
            "_paciente": "Oliver"
          },
          {
            "_id": 1.2803918239e+10,
            "_paciente": "Priscilla"
          }
        ],
        "nome": "UTI1"
      }
    ]
  }
]



  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. jak zapisać wynik zapytania mongodb do zmiennej javascript?

  2. Korzystanie z trwałych funkcji w aplikacji funkcji azure z mongodb

  3. Mongoose — ten sam schemat dla różnych kolekcji w (MongoDB)

  4. PHP nie może znaleźć sterownika MongoDB

  5. Limit czasu sterownika MongoDB C#