# MongoDB 使用`find()`方法查询文档

> 原文： [https://beginnersbook.com/2017/09/mongodb-query-document-using-find-method/](https://beginnersbook.com/2017/09/mongodb-query-document-using-find-method/)

在我之前的教程中，我使用`find()`方法查询集合中的所有文档。在本教程中，我们将看到`find()`方法的用法，以根据给定的条件查询集合中的文档。让我们开始吧。

## 以 JSON 格式查询所有文档

假设我们在名为`beginnersbookdb`的数据库中有一个集合`students`。要获取所有文档，我们使用此命令：

```js
db.students.find()
```

但是，我们获得的输出不是任何格式且不太可读。为了提高可读性，我们可以使用以下命令格式化 JSON 格式的输出：

```js
db.students.find().forEach(printjson);
```

或者只是使用`pretty()` - 它做同样的事情。

```js
db.students.find().pretty()
```

正如您在下面的屏幕截图中看到的那样，文档是 JSON 格式的。

![MongoDB query document in JSON format](img/55e0d2574b9291b44b1f052dcfe3cdd2.jpg)

## 根据条件查询文档

我们可以根据条件获取所选文档，而不是从集合中获取所有文档。

**相等判断：**

例如：我想从学生集合中获取`"Steve"`的数据。这个命令应该是：

```js
db.students.find({StudentName : "Steve"}).pretty()
```

此命令返回与给定条件匹配的文档。

![MongoDB Query Document Equality Criteria](img/d112e65729b8b6715f8df222fb07f6a3.jpg)

**大于判断：**

语法：

```js
db.collection_name.find({"field_name":{$gt:criteria_value}}).pretty()
```

例如：我想获取年龄`> 32`的学生的详细信息，那么查询应该是：

```js
db.students.find({"age":{$gt:32}}).pretty()
```

我有两个符合条件的文档，如下面的屏幕截图所示：

![MongoDB Query Document GreaterThan Criteria](img/41a6a4b2a583e6152d27031bee10cbef.jpg)

**小于判断：**

语法：

```js
db.collection_name.find({"field_name":{$lt:criteria_value}}).pretty()
```

示例：查找 ID 小于 3000 的所有学生。此判断的命令为：

```js
db.students.find({"StudentId":{$lt:3000}}).pretty()
```

输出：

```js
> db.students.find({"StudentId":{$lt:3000}}).pretty()
{
        "_id" : ObjectId("59bcecc7668dcce02aaa6fed"),
        "StudentId" : 1001,
        "StudentName" : "Steve",
        "age" : 30
}
{
        "_id" : ObjectId("59bcecc7668dcce02aaa6fee"),
        "StudentId" : 1002,
        "StudentName" : "Negan",
        "age" : 42
}
```

**不等于判断：**

语法：

```js
db.collection_name.find({"field_name":{$ne:criteria_value}}).pretty()
```

示例：查找 id 不等于 1002 的所有学生。此条件的命令为：

```js
db.students.find({"StudentId":{$ne:1002}}).pretty()
```

判断：

```js
> db.students.find({"StudentId":{$ne:1002}}).pretty()
{
        "_id" : ObjectId("59bcecc7668dcce02aaa6fed"),
        "StudentId" : 1001,
        "StudentName" : "Steve",
        "age" : 30
}
{
        "_id" : ObjectId("59bcecc7668dcce02aaa6fef"),
        "StudentId" : 3333,
        "StudentName" : "Rick",
        "age" : 35
}
```

以下是另外两个判断：

**大于等于判断：**

```js
db.collection_name.find({"field_name":{$gte:criteria_value}}).pretty()
```

**小于等于判断：**

```js
db.collection_name.find({"field_name":{$lte:criteria_value}}).pretty()
```

> 我们在所有命令末尾添加的`pretty()`方法不是必需的。它仅用于格式化目的。