MongoDB
 sql >> Datenbank >  >> NoSQL >> MongoDB

Mongodb:$in-Operator vs. viele einzelne Abfragen

Ich würde definitiv die $in-Abfrage verwenden und ein Array von _ids bereitstellen.

Beispiel:

db.collection.find({
    "key": {
        "$in": [
            ObjectId("xxx"),
            ObjectId("yyy"),
            ObjectId("zzz")
        ]
    }
})

Warum?

  • Wenn Sie eine Schleife verwenden, gibt es eine gewisse Menge an Einrichtung und Abbau für jede Abfrage, die Cursor erzeugt und erschöpft, was Mehraufwand verursachen würde.
  • Wenn Sie dies nicht auf einem lokalen Rechner tun, erzeugt es auch TCP/IP-Overhead für jede Anfrage. Lokal könnten Sie Domain-Sockets verwenden.
  • Es gibt einen Index für "_id", der standardmäßig erstellt wird, und das Sammeln einer Gruppe von Dokumenten, die in einer Batch-Anfrage zurückgegeben werden sollen, sollte extrem schnell sein, sodass es nicht nötig ist, dies in kleinere Abfragen aufzuteilen.

Hier finden Sie zusätzliche Dokumentation, wenn Sie sie sich ansehen möchten.