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

mongodb-ネストされたサブドキュメントの巻き戻し

    以下のmongodb3.6以降の集計を試すことができます

    List.aggregate([
      { "$match": { "_id": id }},
      { "$lookup": {
        "from": Items.collection.name,
        "let": { "items": "$items" },
        "pipeline": [
          { "$match": { "$expr": { "$in": [ "$_id", "$$items" ] } } }
        ],
        "as": "items"
      }},
      { "$lookup": {
        "from": Lists.collection.name,
        "let": { "included_lists": "$included_lists", "items": "$items" },
        "pipeline": [
          { "$match": { "$expr": { "$in": [ "$_id", "$$included_lists" ] } } },
          { "$lookup": {
            "from": Items.collection.name,
            "let": { "items": "$items" },
            "pipeline": [
              { "$match": { "$expr": { "$in": [ "$_id", "$$items" ] } } }
            ],
            "as": "items"
          }},
          { "$project": { "allItems": { "$concatArrays": [ "$$items", "$items" ]}}}
        ],
        "as": "included_lists"
      }},
      { "$unwind": "$included_lists" },
      { "$replaceRoot": { "newRoot": "$included_lists" }}
    ])
    


    1. Meteorドキュメントのメッセージカウントの例はどのように機能しますか?

    2. JavaScriptデザインパターン-不要な非同期性への対処

    3. MongoDBを使用したMapReduceは、非常に低速です(同等のデータベースの場合、MySQLでは30時間対20分)

    4. プログラムでMongoDbコンバーターを設定する