sql >> Database >  >> NoSQL >> MongoDB

Mongodb combineert geaggregeerde zoekopdrachten

U kunt niet-gecorreleerde subquery's gebruiken, beschikbaar vanaf 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-speeltuin

Om de prestaties te verbeteren, raad ik u aan de referentie-ID's op te slaan als ObjectId zodat u ze niet bij elke stap hoeft te converteren.




  1. Windows IoT - Mongodb - Framboos

  2. Gegevens selecteren waarbij het bereik tussen twee verschillende velden een bepaald getal bevat

  3. Hoe kan ik programmatisch de huidige database krijgen waarnaar Mongoid schrijft?

  4. Integratie van mongodb met elasticsearch in node.js-omgeving