web-dev-qa-db-fra.com

Liste toutes les valeurs d'un certain champ dans mongodb

Comment puis-je obtenir un tableau contenant toutes les valeurs d'un certain champ pour tous mes documents dans une collection?

db.collection:

{ "_id" : ObjectId("51a7dc7b2cacf40b79990be6"), "x" : 1 }
{ "_id" : ObjectId("51a7dc7b2cacf40b79990be7"), "x" : 2 }
{ "_id" : ObjectId("51a7dc7b2cacf40b79990be8"), "x" : 3 }
{ "_id" : ObjectId("51a7dc7b2cacf40b79990be9"), "x" : 4 }
{ "_id" : ObjectId("51a7dc7b2cacf40b79990bea"), "x" : 5 }

"db.collection.ListAllValuesForfield (x)" Résultat: [1,2,3,4,5]

Et si ce champ était un tableau?

{ "_id" : ObjectId("51a7dc7b2cacf40b79990be6"), "y" : [1,2] }
{ "_id" : ObjectId("51a7dc7b2cacf40b79990be7"), "y" : [3,4] }
{ "_id" : ObjectId("51a7dc7b2cacf40b79990be8"), "y" : [5,6] }
{ "_id" : ObjectId("51a7dc7b2cacf40b79990be9"), "y" : [1,2] }
{ "_id" : ObjectId("51a7dc7b2cacf40b79990bea"), "y" : [3,4] }

"db.collection.ListAllValuesInArrayField (y)" Résultat: [1,2,3,4,5,6,1,2,3,4]

De plus, puis-je rendre ce tableau unique? [1,2,3,4,5,6]

36
chimpsarehungry

db.collection.distinct('x')

devrait vous donner un tableau de valeurs uniques pour ce champ.

67
John Petrone

Remarque: Ma réponse est une fourchette de la réponse d'origine.

Avant tout "pouce en l'air" ici, "pouce en l'air" la réponse acceptée :).


db.collection.distinct("NameOfTheField")

Recherche les valeurs distinctes d'un champ spécifié dans une seule collection ou vue et renvoie les résultats dans un tableau.

Référence: https://docs.mongodb.com/manual/reference/method/db.collection.distinct/

3
ivanleoncz

Cela retournerait un tableau de documents, contenant juste sa valeur x ...

db.collection.find(
    { },
    { x: 1, y: 0, _id:0 }
)
2
martskins