List all values of a certain field in mongodb

chimpsarehungry picture chimpsarehungry · Apr 24, 2014 · Viewed 43.2k times · Source

How would I get an array containing all values of a certain field for all of my documents in a 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)" Result: [1,2,3,4,5]

Also, what if this field was an array?

{ "_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)" Result: [1,2,3,4,5,6,1,2,3,4]

Additionally, can I make this array unique? [1,2,3,4,5,6]

Answer

John Petrone picture John Petrone · Apr 24, 2014

db.collection.distinct('x')

should give you an array of unique values for that field.