如何在MongoDB中使用独立计数查询

173 阅读3分钟

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()

Text
Description automatically generated Text
Description automatically generated

本指南中的例子将在上面显示的数据上进行练习。

例1:获取 "Cat "字段中的不同字段名

在这个例子中,distinct()方法被应用于 "Cat"字段,它将返回 "laptops"集合中不同字段的名称。为此,我们在MongoDB Shell中执行了以下命令。

> db.laptops.distinct("Cat")

Text
Description automatically generated

正如我们所看到的,"distinct()"方法只显示不同字段的名称。

例2:计算 "Cat "字段的不同值的数量

参照上面的例子,我们将使用下面提到的命令来计算 "linuxhint"集合的 "Cat"字段中的独立字段数量。

> db.laptops.distinct("Cat").length

A picture containing text
Description automatically generated

例3:使用查询条件

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

> db.laptops.distinct("Make", {Cat: "Gaming"}).length

A picture containing text
Description automatically generated

从输出结果可以看出,有 "4"个不同的字段有一个 "Make"字段,在这些字段中,"Cat"与 "Gaming"匹配。

例子4:计算数组字段中不同值的数量

笔记本电脑"集合中的 "Make"字段是一个数组,其中包含制造商的名称。例如,下面提到的命令将计算其中的独立值的数量。

> db.laptops.distinct("Make").length

A picture containing text
Description automatically generated

例5:计算一个数字字段中的不同值的数量

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

> db.laptops.distinct("Price").length

Diagram, website
Description automatically generated with medium confidence

结论

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