是否有一个查询,用于计算一个字段在DB中包含多少不同的值.

f、 e我有一个国家字段,有8种国家值(西班牙、英国、法国等)

如果有人在新国家/地区添加更多文档,我希望查询返回9.

还有比分组和计数更简单的方法吗?

推荐答案

MongoDB有一个distinct command,它返回一个字段的不同值数组;可以判断数组的长度以获取计数.

还有一个shell db.collection.distinct()助手:

> db.countries.distinct('country');
[ "Spain", "England", "France", "Australia" ]

> db.countries.distinct('country').length
4

正如MongoDB文档中指出的:

结果不得大于最大BSON大小(16MB).如果结果超过最大BSON大小,请使用聚合管道使用$group运算符检索不同的值,如Retrieve Distinct Values with the Aggregation Pipeline中所述.

Mongodb相关问答推荐

如何对嵌套在另一个数组中的数组中的字段执行查找?

如何使用ID数组对一个集合中的金额求和并更新另一个集合中的字段?

最有效的Mongo聚合来展开和过滤:匹配、展开、匹配与投影和过滤

Mongo Aggregate管道-另一个集合中的多个查找

匹配/筛选/投影对象中数组中数组中的嵌套字段

如何获取键值对的对象,其中值仅具有 mongoDB 中的投影字段

构造函数的参数 0 需要错误类型的 bean

从具有多个数组匹配 MongoDB 的两个集合中采样数据

MongoDB shell:如何删除列表以外的所有集合

根据条件删除一些数组元素并将数组的大小更新为mongo中的另一个文件

从 mongodb Golang 检索时判断零等效时间.时间

Mongoose $inc 枚举验证失败

使用 mgo 从 golang 中的 Mongodb 中 Select 列

无法提取地理键,经度/纬度超出范围

MongoDB插入引发重复键错误

MongoDB:自动生成的 ID 为零

REACT 获取发布请求

具有 AWS 云形成和自动zoom 的 Mongodb 集群

验证 MongoCredential 的异常和未分类的 Mongo Db 异常

mongoose — 判断 ObjectId 是否存在于数组中