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

原文: https://beginnersbook.com/2017/09/mongodb-query-document-using-find-method/

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

以 JSON 格式查询所有文档


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

db.students.find()

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

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

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

db.students.find().pretty()

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

MongoDB query document in JSON format

根据条件查询文档


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

相等判断:

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

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

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

MongoDB Query Document Equality Criteria

大于判断:

语法:

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

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

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

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

MongoDB Query Document GreaterThan Criteria

小于判断:

语法:

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

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

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

输出:

> 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
}

不等于判断:

语法:

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

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

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

判断:

> 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
}

以下是另外两个判断:

大于等于判断:

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

小于等于判断:

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

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

评论