MongoDB
 sql >> Baza danych >  >> NoSQL >> MongoDB

MongoDB:powolne wyszukiwanie potoku wydajności w porównaniu z wyszukiwaniem podstawowym

Chodzi o to, że kiedy robisz lookup za pomocą pipeline z etapem dopasowania, indeks byłby używany tylko dla pól, które są dopasowane za pomocą $eq operator a dla reszty indeks nie będzie używany.

A przykład, który określiłeś dla potoku, będzie działał tak (ponownie indeks nie będzie tutaj używany, ponieważ tak nie jest $eq )

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

Ponieważ gracze są tablicą obiektów, muszą być najpierw zmapowane do tablicy identyfikatorów

Plac zabaw MongoDB



  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. CouchDB vs MongoDB (wykorzystanie pamięci)

  2. Agreguj dokumenty, w których obiekty w tablicy spełniają wiele warunków

  3. Mongoose — zwiększanie wartości w tablicy obiektów

  4. Mongoid 3 - dojazd mapa_redukuj wyniki

  5. Pobierz najnowszą płytę z kolekcji mongodb