sql >> Databasteknik >  >> NoSQL >> MongoDB

MongoDB, prestanda för fråga genom reguljärt uttryck på indexerade fält

Egentligen enligt dokumentationen,

Om det finns ett index för fältet, matchar MongoDB det reguljära uttrycket mot värdena i indexet, vilket kan vara snabbare än en samlingssökning. Ytterligare optimering kan ske om det reguljära uttrycket är ett "prefixuttryck", vilket innebär att alla potentiella matchningar börjar med samma sträng. Detta tillåter MongoDB att konstruera ett "intervall" från det prefixet och endast matcha mot de värden från indexet som faller inom det intervallet.

http://docs.mongodb.org/manual/reference/operator/query/regex/#index-use

Med andra ord:

För /Jon Skeet/ regex ,mongo kommer att fullskanna nycklarna i indexet och sedan hämta de matchade dokumenten, vilket kan vara snabbare än samlingsskanningen.

För /^Jon Skeet/ regex ,mongo kommer endast att skanna intervallet som börjar med regex i indexet, vilket kommer att vara snabbare.



  1. Välj Max() med grupp efter i mongodb

  2. MongoDB $pull array 2 nivå

  3. Ta bort en nyckel/värde från befintlig MongoDB-post

  4. En timeout inträffade efter 30 000 ms val av en server med CompositeServerSelector