Mongodb find()查询:只返回唯一值(没有重复)

Fra*_*ckl 46 mongodb mongodb-query

我有一组文件:

{
    "networkID": "myNetwork1",
    "pointID": "point001",
    "param": "param1"
}
{
    "networkID": "myNetwork2",
    "pointID": "point002",
    "param": "param2"
}
{
    "networkID": "myNetwork1",
    "pointID": "point003",
    "param": "param3"
}
...
Run Code Online (Sandbox Code Playgroud)

pointID是唯一的,但networkID不是.

是否可以以这样的方式查询Mongodb:结果将是:[myNetwork1,myNetwork2]

现在我只设法返回[myNetwork1,myNetwork2,myNetwork1]

我需要一个唯一的networkID列表来填充自动完成select2组件.由于我可能有多达50K的文档,我更希望mongoDb在查询级别过滤结果.

小智 108

我想你可以用 db.collection.distinct(fields,query)

您将能够在NetworkID中获得不同的值.

它应该是这样的:

Db.collection.distinct('NetworkID')
Run Code Online (Sandbox Code Playgroud)

  • 如果我想获得完整记录怎么办?这只会返回`NetworkID`. (20认同)
  • @HalfBloodPrince,有什么完整记录?`distinct`返回字段的所有唯一值.在这种情况下,返回一个或多个记录是没有意义的.您必须使用聚合管道[`$ group` operator](https://docs.mongodb.com/manual/reference/operator/aggregation/group/)来获取不同的+记录. (7认同)
  • @HalfBloodPrince:如果您想要完整的记录,请查看/sf/answers/3142126501/ (2认同)