列出mongodb中某个字段的所有值

时间:2014-04-24 15:21:19

标签: mongodb mongodb-query database

如何获取包含集合中所有文档的某个字段的所有值的数组?

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)” 结果:[1,2,3,4,5]

另外,如果这个字段是一个数组怎么办?

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

此外,我可以使这个数组独一无二吗? [1,2,3,4,5,6]

3 个答案:

答案 0 :(得分:58)

db.collection.distinct('x')

应该为您提供该字段的唯一值数组。

答案 1 :(得分:2)

这会返回一个docs数组,只包含它的x值......

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

答案 2 :(得分:2)

注意:我的回答是原始答案中的一个分支。

在任何"竖起之前"在这里,"竖起大拇指"接受的答案:)。

db.collection.distinct("NameOfTheField")

  

在单个集合或视图中查找指定字段的不同值,并以数组形式返回结果。

参考:https://docs.mongodb.com/manual/reference/method/db.collection.distinct/