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

$filter最大2つのネストされたレベル(mongodb)

    $ unwindを実行する必要があります 最初の配列を使用すると、 $ filter> ネストされた配列上

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

    または、これも試すことができます

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

    どちらも同様の出力を提供します

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



    1. 基本的なMongoDBコマンドとは何ですか?それらの使用方法は?

    2. サーバー検出および監視エンジンは非推奨です

    3. systemdをinitシステム(PID 1)としてシステムを起動していません。操作できません

    4. MongoDB 2dsphereインデックスが失敗します(不正なジオメトリ?)