sql >> Databasteknik >  >> NoSQL >> MongoDB

Mongodb :$in-operatör kontra många enskilda frågor

Jag skulle definitivt gå med att använda $in-frågan och tillhandahålla en uppsättning _ids.

Exempel:

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

Varför?

  • Om du loopar, finns det en viss mängd inställningar och rivningar för varje fråga som skapar och tröttar ut markörer som skulle skapa overhead.
  • Om du inte gör detta på en lokal dator skapar det också tcp/ip-overhead för varje begäran. Lokalt kan du använda domänsockets.
  • Det finns ett index på "_id" skapat som standard och att samla in en grupp av dokument som ska returneras i en gruppförfrågan bör vara extremt snabb så det finns ingen anledning att dela upp detta i mindre frågor.

Det finns ytterligare dokumentation här om du vill kolla in den.



  1. mongo:avkastningen är inte lika med count()

  2. Allt du behöver veta om MongoDB Client

  3. Importsätten för mongoimport

  4. Planera och hantera scheman i MongoDB (även om det är schemalöst)