39 votes

Obtenir le n-ième élément d'un tableau dans MongoDB

Dans le cadre de mon document dans MongoDB, je stocke un tableau d'objets. Comment puis-je l'interroger uniquement pour le 4ème élément du tableau par exemple ? Donc je ne veux pas qu'on sorte tout le tableau, juste le 4ème élément.

66voto

Russell Points 5472

Utilisez $slice.

db.foo.find({ bar : "xyz" } , { my_array : { $slice : [n , 1] } } )

récupérera le nième élément du tableau "my_array" de tous les documents de la collection foo où bar = "xyz".

Quelques autres exemples tirés de la documentation MongoDB :

db.posts.find({}, {comments:{$slice: 5}}) // first 5 comments
db.posts.find({}, {comments:{$slice: -5}}) // last 5 comments
db.posts.find({}, {comments:{$slice: [20, 10]}}) // skip 20, limit 10
db.posts.find({}, {comments:{$slice: [-20, 10]}}) // 20 from end, limit 10

Que vous pouvez lire ici : http://www.mongodb.org/display/DOCS/Retrieving+a+Subset+of+Fields

8voto

Eskoala Points 116

Une autre façon de le faire est d'utiliser la syntaxe du tableau de mise à jour. Ici, contribs.1 définit le deuxième élément dans le tableau contribs comme ayant une valeur ALGOL 58 (Tiré de la page du manuel sur la syntaxe de mise à jour)

db.bios.update(
   { _id: 1 },
   { $set: { 'contribs.1': 'ALGOL 58' } }
)

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X