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

MongoDB:pomalé vyhledávání v potrubí ve srovnání se základním vyhledáváním

Jde o to, že když provedete lookup pomocí pipeline s fází shody, pak by se index použil pouze pro pole, která se shodují s $eq operator a pro zbytek se index nepoužije.

A příklad, který jste zadali s kanálem, bude fungovat takto ( zde nebude znovu použit index, protože není $eq )

db.matches.aggregate([
  {
    $lookup: {
      from: "players",
      let: {
        ids: {
          $map: {
            input: "$players",
            in: "$$this._id"
          }
        }
      },
      pipeline: [
        {
          $match: {
            $expr: {
              $in: [
                "$_id",
                "$$ids"
              ]
            }
          }
        }
      ],
      as: "players"
    }
  }
])

Protože hráči jsou pole objektů, je třeba je nejprve namapovat na pole ID

Hřiště MongoDB



  1. Jak vytvořit partnerský vztah mezi MongoDB Atlas a Google App Engine Standard Environment Node App

  2. Rails:Nesprávný počet argumentů (zadáno 2, očekává se 1) MongoID

  3. MongoDB Agregation, existuje způsob, jak získat triggerStats z agregovaného kurzoru?

  4. Jak naslouchat změnám v kolekci MongoDB?