Latest web development tutorials

MongoDB indexación avanzada

Considere el siguiente documento colecciones (usuarios):

{
   "address": {
      "city": "Los Angeles",
      "state": "California",
      "pincode": "123"
   },
   "tags": [
      "music",
      "cricket",
      "blogs"
   ],
   "name": "Tom Benzamin"
}

El documento anterior contiene sub-documentos, y hacer frente a una serie de etiquetas.


campo de matriz indexada

Supongamos que recuperamos la etiqueta basada en el usuario, para lo cual necesitamos para indexar las variables de matriz de recolección.

Crear un índice de la matriz, la matriz de las necesidades de cada campo a su vez en un índice. Así que cuando se crea un índice para las variables de matriz, que proporcionará la música, el cricket, Diarios de tres valores para establecer un índice separado.

Crear un índice de matriz, utilice el siguiente comando:

>db.users.ensureIndex({"tags":1})

Después de crear el índice, podemos recuperar la colección de campos etiquetas:

>db.users.find({tags:"cricket"})

Se utilizó para verificar el uso del índice, puede utilizar el comando explique:

>db.users.find({tags:"cricket"}).explain()

Los resultados del comando anterior mostrará "cursor": "tags_1 BtreeCursor", se dijo que el índice se ha utilizado.


campo de sub-índice de documento

Supongamos que necesitamos ciudad, estado, código PIN campo para recuperar documentos, ya que estos campos son campos subdocumento, por lo que necesitamos una indexación subdocumento.

Crear un índice para los tres subcampos del documento, el comando es el siguiente:

>db.users.ensureIndex({"address.city":1,"address.state":1,"address.pincode":1})

Una vez que se crea el índice, podemos utilizar el campo para recuperar los datos sub-documentos:

>db.users.find({"address.city":"Los Angeles"})   

Recuerde expresión de consulta debe seguir el orden del índice especificado. Por lo que el índice creado anteriormente apoyará la siguiente consulta:

>db.users.find({"address.city":"Los Angeles","address.state":"California"}) 

También es compatible con la siguiente consulta:

>db.users.find({"address.city":"LosAngeles","address.state":"California","address.pincode":"123"})