sql >> Database >  >> NoSQL >> MongoDB

MongoDB:pijplijn zoeken met trage prestaties vergeleken met standaard opzoeken

Het punt is dat wanneer je een lookup met behulp van pipeline met een match-fase, dan zou de index alleen worden gebruikt voor de velden die overeenkomen met de $eq operator en voor de rest wordt de index niet gebruikt.

En het voorbeeld dat u met pijplijn hebt opgegeven, werkt als volgt ( weer index zal hier niet worden gebruikt omdat dit niet het geval is $eq )

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

Omdat spelers een reeks objecten is, moet deze eerst worden toegewezen aan een reeks id's

MongoDB-speeltuin



  1. Kan geen verbinding maken met MongoDB via node.js in Docker

  2. MongoDB root gebruiker

  3. MongoDB telling Commando

  4. Suggesties nodig voor het ontwerpen van artiestenaanbevelingen