MongoDB作为一个NoSQL数据库,不遵循传统数据库的检索机制。它有自己的MongoDB查询语言(MQL),包含了大量的方法和命令来存储和检索MongoDB中的文档。其中一个检索查询是显示特定集合中文档的明显数量。
当你在一个集合中有成百上千的文档,而你想找到该集合中明显的文档总数时,明显计数查询很有帮助。在今天的MongoDB教程系列文章中,我们描述了独立计数查询 的基本概念和它在MongoDB中的应用。
独立计数是如何工作的
计算独立文档的主要目的是为了避免重复,因为重复会在查询的时候消耗时间和资源。下面提供了distinct方法的语法。
db.collection-name.distinct("<field>", "<query>", "<options>").length
通过使用上述语法,使用distinct() 方法可以检索到不同的字段,而".length"将计算distinct() 方法返回的字段数量。
前提条件
有一些基于MongoDB的Ubuntu实例必须准备好才能进入练习环节。例如,你必须保证以下事项。
数据库: 你的Ubuntu上需要有一个有效的MongoDB数据库。例如,我们正在使用一个名为 "linuxhint"的数据库。
收集:在 数据库之后,一个集合是必要的,必须与你的数据库相关联。本指南中使用的集合名称是 "laptops"。
下一节将演示MongoDB中独立计数方法的用法。
如何在MongoDB中使用不同的计数方法
在通过一些例子探索工作之前,让我们看看 "laptops"集合中的内容。
> db.laptops.find().pretty()

本指南中的例子将在上面显示的数据上进行练习。
例1:获取 "Cat "字段中的不同字段名
在这个例子中,distinct()方法被应用于 "Cat"字段,它将返回 "laptops"集合中不同字段的名称。为此,我们在MongoDB Shell中执行了以下命令。
> db.laptops.distinct("Cat")

正如我们所看到的,"distinct()"方法只显示不同字段的名称。
例2:计算 "Cat "字段的不同值的数量
参照上面的例子,我们将使用下面提到的命令来计算 "linuxhint"集合的 "Cat"字段中的独立字段数量。
> db.laptops.distinct("Cat").length

例3:使用查询条件
在这个例子中,distinct方法将与查询条件一起使用,在这种情况下,只有那些与查询条件相匹配的值才被返回。例如,下面提到的命令将给你 "Make"字段中的不同值的计数,其中条件必须匹配[Cat: "Gaming'] 。
> db.laptops.distinct("Make", {Cat: "Gaming"}).length

从输出结果可以看出,有 "4"个不同的字段有一个 "Make"字段,在这些字段中,"Cat"与 "Gaming"匹配。
例子4:计算数组字段中不同值的数量
笔记本电脑"集合中的 "Make"字段是一个数组,其中包含制造商的名称。例如,下面提到的命令将计算其中的独立值的数量。
> db.laptops.distinct("Make").length

例5:计算一个数字字段中的不同值的数量
distinct方法也可以应用于MongoDB中的数字数据类型。如在 "laptops"集合中,有一个字段 "Price",其存储的值属于 "double"数据类型。下面写的命令将计算 "Price"字段中不同值的数量。
> db.laptops.distinct("Price").length

结论
MongoDB像其他数据库一样检索文档,它也有一个distinct()函数,可以只检索任何字段的不同值。在MongoDB系列的这篇文章中,你已经学会了计算不同字段的值和它们的长度。在MongoDB的distinct方法的**.length**扩展名的帮助下,对检索到的文档进行计数。此外,分明计数可以应用于MongoDB支持的任何一种数据类型。