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

Mongodbは集計クエリを組み合わせる

    MongoDBv3.6から入手できる無相関のサブクエリを使用できます

    db.Profile.aggregate([
      {
        $match: { is_del: false }
      },
      {
        $lookup: {
          from: "Store",
          as: "stores",
          let: {
            pid: { $toString: "$_id" }
          },
          pipeline: [
            {
              $match: {
                is_del: false,
                $expr: { $eq: ["$$pid", "$id"] }
              }
            },
            {
              $lookup: {
                from: "Item",
                as: "items",
                let: {
                  sid: { $toString: "$_id" }
                },
                pipeline: [
                  {
                    $match: {
                      is_del: false,
                      $expr: { $eq: ["$$sid", "$sid"] }
                    }
                  },
                  {
                    $count: "count"
                  }
                ]
              }
            },
            {
              $unwind: "$items"
            }
          ]
        }
      }
    ])
    

    Mongo Playground

    パフォーマンスを向上させるために、参照IDをObjectIdとして保存することをお勧めします したがって、各ステップでそれらを変換する必要はありません。




    1. UNIXタイムスタンプに基づく日ごとのMongodb集計

    2. Int64ではなくMongoDBに日付として保存する日付を取得するにはどうすればよいですか?

    3. NodejsMongodbクエリNumberLong

    4. ElasticSearchとPHPの複数のフィールドでの検索