在我之前的教程中,我使用find()
方法查询集合中的所有文档。在本教程中,我们将看到find()
方法的用法,以根据给定的条件查询集合中的文档。让我们开始吧。
以 JSON 格式查询所有文档
假设我们在名为beginnersbookdb
的数据库中有一个集合students
。要获取所有文档,我们使用此命令:
db.students.find()
但是,我们获得的输出不是任何格式且不太可读。为了提高可读性,我们可以使用以下命令格式化 JSON 格式的输出:
db.students.find().forEach(printjson);
或者只是使用pretty()
– 它做同样的事情。
db.students.find().pretty()
正如您在下面的屏幕截图中看到的那样,文档是 JSON 格式的。
根据条件查询文档
我们可以根据条件获取所选文档,而不是从集合中获取所有文档。
相等判断:
例如:我想从学生集合中获取"Steve"
的数据。这个命令应该是:
db.students.find({StudentName : "Steve"}).pretty()
此命令返回与给定条件匹配的文档。
大于判断:
语法:
db.collection_name.find({"field_name":{$gt:criteria_value}}).pretty()
例如:我想获取年龄> 32
的学生的详细信息,那么查询应该是:
db.students.find({"age":{$gt:32}}).pretty()
我有两个符合条件的文档,如下面的屏幕截图所示:
小于判断:
语法:
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()
方法不是必需的。它仅用于格式化目的。