sql >> Databáze >  >> NoSQL >> MongoDB

Mongodb kombinuje souhrnné dotazy

Můžete použít nekorelované poddotazy dostupné z 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"
        }
      ]
    }
  }
])

Hřiště Mongo

Chcete-li zlepšit výkon, doporučuji uložit referenční ID jako ObjectId takže je nemusíte převádět v každém kroku.




  1. MongoDB:BSON na JSON

  2. Dynamické dotazy MongoRepository

  3. Samoobslužný MongoDB

  4. Jak aktualizovat kolekci MongoDB automaticky každou půlnoc?