MongoDB
 sql >> Base de données >  >> NoSQL >> MongoDB

tri mongodb et requête regex de manière efficace

Vous pouvez essayer de créer un index de texte sur le country_lc , region_lc et city_lc champs :

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

Indices de texte sont une nouvelle fonctionnalité de MongoDB 2.4. Ils ont été ajoutés pour prendre en charge la recherche de texte de contenu de chaîne dans les documents d'une collection. Veuillez consulter la documentation officielle pour obtenir des conseils sur les performances.

De plus, vous pouvez essayer de réécrire la requête sous

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

(Attention :Ceci est, ou n'est pas, équivalent à votre requête, selon la structure des documents.)