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

MongoDBでネストされた$lookup検索を行う方法は?

    $lookup 3.6 構文を使用すると、ネストされたテーブルを結合して $unwind 入力ドキュメントから配列フィールドを分解して、各要素のドキュメントを出力します。このようなもの

    position.aggregate([
      { "$lookup": {
        "from": "companies",
        "let": { "companyId": "$company_id" },
        "pipeline": [
          { "$match": { "$expr": { "$eq": [ "$_id", "$$companyId" ] } } },
          { "$lookup": {
            "from": "industries",
            "let": { "industry_id": "$industry_id" },
            "pipeline": [
              { "$match": { "$expr": { "$eq": [ "$_id", "$$industry_id" ] } } }
            ],
            "as": "industry"
          }},
          { "$unwind": "$industry" }
        ],
        "as": "company"
      }},
      { "$unwind": "$company" }
    ])
    

    3.4バージョンの場合

    position.aggregate([
      { "$lookup": {
        "from": "companies",
        "localField": "company_id",
        "foreignField": "_id",
        "as": "companies"
      }},
      { "$unwind": "$companies" },
      { "$lookup": {
        "from": "industries",
        "localField": "companies.industry_id",
        "foreignField": "_id",
        "as": "companies.industry"
      }},
      { "$unwind": "$companies.industry" },
      { "$group": {
        "_id": "$_id",
        "companies": { "$push": "$companies" }
      }}
    ])
    



    1. 最大ドキュメントサイズを超えずに集計を作成するにはどうすればよいですか?

    2. すべてのMongoコレクションをループして、クエリを実行します

    3. 時間ベースの値を並べ替えるためのRedisデータ構造設計

    4. Mongoは、単一のクエリで一致するドキュメントフィールドを一括検索して更新しますか?