如何在MongoDB中查询

201 阅读4分钟

MongoDB是一个NoSQL数据库,像其他数据库一样支持各种方法来存储和检索数据。MongoDB以文档的形式存储数据,一旦文档在一个集合中被创建;你就可以使用MongoDB查询来检索数据。MongoDB的检索模式与任何SQL数据库相同,但语法不同。为了检索信息,在MongoDB中使用".find() "方法。

在这篇文章中,我们将深入介绍MongoDB查询,以便从MongoDB数据库中获取所需的数据。本指南包括几个部分,以帮助从MongoDB查询文档。

在深入研究之前,让我们先看看在MongoDB中查询文档的前提条件。

先决条件

要从基于MongoDB的数据库中获取数据,你的Ubuntu系统必须具备以下条件。

Mongo Shell:Mongo shell必须处于非活动状态以执行查询

MongoDB数据库:基于Mongo的数据库需要在船上才能应用任何操作

如何在基于MongoDB的数据库中查询文档

本节包含从MongoDB数据库中检索数据的程序指南。为了进行本指南,前两个步骤是必须的

注意: 如果你已经执行过这些步骤,你可以跳过这些步骤。

步骤1:创建一个数据库

首先,导航到mongo shell;你可以使用以下命令来创建一个数据库;我们已经创建了一个名为 "test"的数据库。

> use test

Text Description automatically generated

第2步:创建一个集合并在集合中插入文件

一旦数据库被创建,使用下面的mongo shell命令来创建一个集合;这个集合在这里被命名为 "mycollection"。

> db.createCollection("mycollection")

创建集合后,使用插入方法将文档插入到 "mycollection"集合中。

下面的命令可以在 "mycollection"集合中创建两个文档。

> db.mycollection.insert([{"title": "linuxhint", "description": "best linux content provider", "type": "linux"},{"name": "john", "description": "Author at linuxhint", "type": "ubuntu"}])

如何在MongoDB中查询一个文档

在执行完上述步骤后,你现在可以应用MongoDB的几种方法来帮助查询一个文档。

如何从MongoDB集合中获取所有文档

为了从一个集合中获取所有的文档,MongoDB支持两种方法。

- find() :查找文档并以非结构化的格式显示结果

- pretty() :查找文档并以结构化格式显示结果

这里用例子来描述这两种方法。

MongoDB的 "find()"方法以非结构化的方式显示所有的文档;这个方法的语法写在下面。

db.[name-of-collection].find()

"集合名称"指的是将从其中获取文档的集合名称;例如,下面的mongo shell命令将有助于显示 "mycollection"集合中的所有文档。

> db.mycollection.find()

pretty()"方法是 "find()"方法的一个扩展,它有助于显示结构化格式的文档。这个方法的语法写在下面。

db.[name-of-collection].find().pretty()

在我们的例子中,我们执行了下面的命令来获取 "mycollection"集合中的文档。

> db.mycollection.find().pretty()

如何从MongoDB集合中获取单个文档

还有一个名为 "findOne()"的方法可以帮助检索一个单一的文档。这个方法的语法描述如下。

db.[name-of-collection].findOne()

下面提到的命令将从 "test"数据库的 "mycollection"集合中检索数据。

> db.mycollection.findOne()

如何使用Mongo支持的操作符来查询一个文档

除了上述方法,你还可以使用MongoDB支持的几个运算符,这些运算符可以和 "find()"方法一起使用,以获得更精细的文档形式。例如,"$eq"运算符将打印出与我们所需结果完全匹配的文档;使用该运算符的语法如下所述。

{"key":{$eq:"value"}}

注意: 为了使任何操作符发挥作用,它们都要放在 "find()"方法中。

下面提到的命令将显示符合 "ubuntu "类型的文件。

> db.mycollection.find({"type":{$eq:"ubuntu"}}).pretty()

注意: pretty方法只是为了获得结构化格式的显示。

$lt运算符 :这个操作符用于处理数字元素;你可以打印属于该条件的特定文件。以下语法用于应用这个运算符。

{"key":{$lt:"value"}}

同样,MongoDB支持的数字运算符也有一个列表。

gt运算符:这个运算符显示满足大于条件的文档。gt运算符** :这个运算符显示满足大于条件的文档。**gt"运算符的语法描述如下。

{"key":{$gt:"value"}}

此外,有几个运算符**(inin和nin**)专门与数组数据类型有关:你可以用它们来通过使用数组过滤内容来显示文档。

inin和nin运算符。这 两个运算符与 "find()"方法一起使用,在数组的基础上过滤文档。

例如,$in操作符可以用来打印与 "key"和任何指定 "value"相匹配的文档。

{"key":{"value":["value1","value2",---]}}

同样,nin操作符可以找到"key"与指定的"value"不匹配的文档。nin操作符可以找到 "**key**"与指定的 "**value**"不匹配的文档。nin操作符的语法与$in操作符相同。

{"key":{"value":["value1","value2",---]}}

OR & AND操作符:O R条件搜索集合中的 ""和 "",并打印所有至少包含一个 ""和相关 ""的文件。其语法如下。

{$or:[{key1:value1}, {key2:value2},....]}

而AND操作符只匹配那些包含命令中提到的所有 ""和 ""的文件。AND条件的语法如下。

{$and:[{key1:value1}, {key2:value2}.....]}

结论

MongoDB提供了非关系型数据库管理支持,与传统数据库相比,其行为方式有所不同。像其他数据库一样,MongoDB也可以用各种方法和操作符查询文档。在这篇文章中,你已经学会了在MongoDB中使用基本方法和这些方法所支持的操作符来查询一个文档。基本方法只是在没有任何条件的情况下打印文档;但是,如果你想在有条件的情况下获得结果;你可以使用基本方法的操作符来实现。