如何获取包含集合中所有文档的某个字段的所有值的数组?
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]
答案 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/