sql >> Database teknologi >  >> NoSQL >> MongoDB

Mongodb kombinerer samlede forespørgsler

Du kan bruge ukorrelerede underforespørgsler, tilgængelige fra MongoDB v3.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

For at forbedre ydeevnen foreslår jeg, at du gemmer reference-id'erne som ObjectId så du ikke behøver at konvertere dem i hvert trin.




  1. Flersproget datamodellering på MongoDB

  2. Laravel Jensseger Mongodb belongsToMany returnerer tom array

  3. oprettelse af en anden database for hver samling i MongoDB 2.2

  4. Sum alle værdier af samme navngivne felter af dokumenter i en samling