university tutorial example descargar caracteristicas mongodb

tutorial - mongodb university



En MongoDB, ¿cómo indexar los campos de un objeto incrustado en una matriz? (2)

Puedes crear el siguiente índice:

db.posts.ensureIndex({"comments.author" : 1})

Esto indexará solo el campo de autor de los documentos incrustados. Tenga en cuenta que el índice será utilizado para

db.posts.find( { "comments.author" : "julie" } )

Tanto como

db.posts.find( { comments: {$elemMatch: {author : "julie" }}} )

La documentación de mongodb para multikeys proporciona un ejemplo de consulta de campos de objetos incrustados en una matriz:

http://www.mongodb.org/display/DOCS/Multikeys

Pero no hay explicación sobre cómo crear un índice para esa situación. La creación de un índice en la matriz no parece funcionar (utilizando el mecanismo de explicación puede ver que el índice no se usa).

Detalles adicionales:

> // find posts where julie commented > db.posts.find( { "comments.author" : "julie" } ) {"title" : "How the west was won", "comments" : [{"text" : "great!" , "author" : "sam"}, {"text" : "ok" , "author" : "julie"}], "_id" : "497ce79f1ca9ca6d3efca325"}

Si lo hace db.articles.ensureIndex( { comments : 1 } ) no indexará los subcampos de los objetos de comentarios, sino solo el objeto de comentarios en sí.

Así que lo siguiente usaría el índice:

> db.posts.find( {comments : { "author" : "julie", "text" : "ok" } } )

Porque se busca en los objetos de comentarios.

Pero lo siguiente no usaría el índice:

> db.posts.find( { "comments.author" : "julie" } )

Entonces, ¿cómo lograr que mongodb se indexe para el segundo caso?


usted crea el índice como si lo hiciera con un campo "normal";

db.[collection].ensureIndex( { [yourArrayField] : 1 } )