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

Mongodb-Sortierung und Regex-Abfrage auf effiziente Weise

Sie könnten versuchen, einen Textindex zu erstellen auf country_lc , region_lc und city_lc Felder:

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

Textindizes sind ein neues Feature in MongoDB 2.4. Sie wurden hinzugefügt, um die Textsuche nach Zeichenfolgeninhalten in Dokumenten einer Sammlung zu unterstützen. Bitte werfen Sie einen Blick auf die offizielle Dokumentation für Leistungshinweise.

Außerdem können Sie versuchen, die Abfrage als

umzuschreiben
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 })

(Achtung :Je nach Struktur der Dokumente entspricht dies Ihrer Anfrage oder nicht.)