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

ネストされたドキュメントを含むMongodb$lookup

    以下の集計をmongodb3.6で使用できます 以上

    db.User.aggregate([
      { "$lookup": {
        "from": "orderTracking",
        "let": { "userId": "$userId" },
        "pipeline": [
          { "$match": { "$expr": { "$eq": ["$userId", "$$userId"] }}},
          { "$unwind": "$TrackLocation" },
          { "$lookup": {
            "from": "locationType",
            "let": { "location": "$TrackLocation.locationId" },
            "pipeline": [
              { "$match": { "$expr": { "$eq": ["$locationId", "$$location"] }}}
            ],
            "as": "locationType"
          }},
          { "$project": {
            "_id": 0,
            "productTypeName": { "$arrayElemAt": ["$locationType.productTypeName", 0] },
            "at": "$TrackLocation.at"
          }}
        ],
        "as": "locationType"
      }},
      { "$replaceRoot": { "newRoot": { "$mergeObjects": ["$addres", "$$ROOT"] }}},
      { "$project": { "addres": 0 }}
    ])
    

    出力

    [
      {
        "_id": ObjectId("59a504eb6171b554c02292a9"),
        "city": "Bengaluru",
        "country": "India",
        "dateOfBirth": "1992-01-01",
        "locationType": [
          {
            "at": "2017-10-11",
            "productTypeName": "Warehouse"
          },
          {
            "at": "2017-10-13",
            "productTypeName": "On Transit"
          }
        ],
        "state": "Karnataka",
        "userId": 12,
        "userName": "Shahabaz Shafi"
      }
    ]
    



    1. MongoDBは完全に一致する配列を検索しますが、順序は重要ではありません

    2. Spring Rest CallでGridFSを使用してMongoから取得した画像を送信するにはどうすればよいですか?

    3. Javaを使用してBsonDocumentオブジェクトをファイルに書き込み、再度読み取るにはどうすればよいですか。

    4. Node.jsからMongoDBへの接続が遅い理由