sql >> Databasteknik >  >> NoSQL >> MongoDB

mongodb sorterar och regex-fråga på ett effektivt sätt

Du kan prova att skapa ett textindexcountry_lc , region_lc och city_lc fält:

db.reviews.ensureIndex( { "country_lc": "text" } )
db.reviews.ensureIndex( { "region_lc": "text" } )
db.reviews.ensureIndex( { "city_lc": "text" } )

Textindex är en ny funktion i MongoDB 2.4. De lades till för att stödja textsökning av stränginnehåll i dokument i en samling. Ta en titt i den officiella dokumentationen för prestandatips.

Dessutom kan du prova att skriva om frågan som

db.location.find(
     { "docType": {"$in": [ "country", "region", "city" ]},
       "$or": [
         { "country_lc": /^unit/ },
         { "region_lc": /^unit/ },
         { "city_lc": /^unit/ },
       ]
    }, 
    { "country": 1, "region": 1, "city": 1, "docType" :1 }
   ).sort({ "country_lc" :1, "region_lc": 1, "city_lc":1 })

(Varning :Detta är, eller är inte, ekvivalent med din fråga, beroende på strukturen på dokumenten.)



  1. new Date() i sammanlagt $project

  2. Mongoose anslutningsfel vid anslutning till mLab

  3. kan inte starta mongo db, initandlisten undantag

  4. MongoDB - MySQL SUM (FALL NÄR) Motsvarar?