首页 文章资讯内容详情

MongoDB基础教程系列--第四篇 MongoDB 查询文档

2026-05-31 2 花语

本文内容纲要:

-查询文档 -1、find()和findOne() -2、条件操作符 -3、$type操作符

返回目录

查询文档

查询文档可以用find()方法查询全部文档,可以用findOne()查询第一个文档,当然还可以根据条件操作符和$type操作符查询满足条件的文档。

1、find()和findOne()

MongoDB用find()查询指定集合的全部文档

格式

db.COLLECTION_NAME.find()

范例

>db.user.find() {"_id":ObjectId("58e1d2f0bb1bbc3245fa754b"),"name":"liruihuan","age":18,"sex":"man"} {"_id":ObjectId("58e1d2f0bb1bbc3245fa754d"),"name":"user1","age":19,"sex":"man"} {"_id":ObjectId("58e1d2f0bb1bbc3245fa754e"),"name":"user2","age":20,"sex":"woman"} {"_id":ObjectId("58e1d2f0bb1bbc3245fa754f"),"name":"user3","age":19,"sex":"woman"} >

如果想要格式化显示查询结果,我们需要用pretty()方法

格式如下

db.COLLECTION_NAME.find().pretty()

再次显示查询结果如下

>db.user.find().pretty() { "_id":ObjectId("58e1d2f0bb1bbc3245fa754b"), "name":"liruihuan", "age":18, "sex":"man" } { "_id":ObjectId("58e1d2f0bb1bbc3245fa754d"), "name":"user1", "age":19, "sex":"man" } { "_id":ObjectId("58e1d2f0bb1bbc3245fa754e"), "name":"user2", "age":20, "sex":"woman" } { "_id":ObjectId("58e1d2f0bb1bbc3245fa754f"), "name":"user3", "age":19, "sex":"woman" } >

除了find()方法,还有一个findOne()方法,它只会返回一个文档

>db.user.findOne() { "_id":ObjectId("58e1d2f0bb1bbc3245fa754b"), "name":"liruihuan", "age":18, "sex":"man" }

2、条件操作符

如果你熟悉sql,那么下表可以更好的理解MongoDB条件查询

操作 格式 范例 RDBMS中的类似语句 等于 {<key>:<value>} db.user.find({"name":"liruihuan"}).pretty() wherename=liruihuan 小于 {<key>:{$lt:<value>}} db.user.find({"age":{$lt:18}}).pretty() whereage<18 小于或等于 {<key>:{$lte:<value>}} db.user.find({"age":{$lte:18}}).pretty() whereage<=18 大于 {<key>:{$gt:<value>}} db.user.find({"age":{$gt:18}}).pretty() whereage>18 大于或等于 {<key>:{$gte:<value>}} db.user.find({"age":{$gte:18}}).pretty() whereage>=18 不等于 {<key>:{$ne:<value>}} db.user.find({"age":{$ne:18}}).pretty() whereage!=18

范例

1、查询user集合中name="liruihuan"的文档,代码如下

>db.user.find({"name":"liruihuan"}).pretty() { "_id":ObjectId("58e1d2f0bb1bbc3245fa754b"), "name":"liruihuan", "age":18, "sex":"man" } >

2、查询user集合中age>19的文档,代码如下

>db.user.find({"age":{$gt:19}}).pretty() { "_id":ObjectId("58e1d2f0bb1bbc3245fa754e"), "name":"user2", "age":20, "sex":"woman" } >

为了更好的理解条件操作符,可以用英文解释一下

$gt--greaterthan $gte--gtequal $lt--lessthan $lte--ltequal $ne--notequal

MongoDB中的and条件

MongoDB的find()方法可以传入多个键(key),每个键(key)以逗号隔开,MongoDB会把这些键作为and条件,及常规SQL的AND条件。

格式

db.collection.find({key1:value1,key2:value2}).pretty()

范例

查询user集合中name值为liruihuan且age值为18的文档

>db.user.find({"name":"liruihuan","age":18}).pretty() { "_id":ObjectId("58e1d2f0bb1bbc3245fa754b"), "name":"liruihuan", "age":18, "sex":"man" }

此实例类似于sql中where条件

WHEREname=liruihuanANDage=18

MongoDB中的or条件

MongoDB中or条件用$or关键字

格式

db.collection.find( { $or:[ {key1:value1},{key2:value2} ] } ).pretty()

范例

查询user集合中name值为liruihuan或name值为user1的文档

>db.user.find({$or:[{"name":"liruihuan"},{"name":"user1"}]}).pretty() { "_id":ObjectId("58e1d2f0bb1bbc3245fa754b"), "name":"liruihuan", "age":18, "sex":"man" } { "_id":ObjectId("58e1d2f0bb1bbc3245fa754d"), "name":"user1", "age":19, "sex":"man" } >

此实例类似于sql中where条件

WHEREname=liruihuanORname="user1"

MongoDB中and和or结合使用

范例

查询user集合中age值大于17且(name值为liruihuan或name值为user1)的文档

>db.user.find({"age":{$gt:17},$or:[{"name":"liruihuan"},{"name":"user1"}]}).pretty() { "_id":ObjectId("58e1d2f0bb1bbc3245fa754b"), "name":"liruihuan", "age":18, "sex":"man" } { "_id":ObjectId("58e1d2f0bb1bbc3245fa754d"), "name":"user1", "age":19, "sex":"man" } >

此实例类似于sql中where条件

WHEREage>17(name=liruihuanORname="user1")

**注:**and条件是在大括号中,or条件是在中括号里的

3、$type操作符

基于BSON类型来查询集合中匹配的数据类型,并返回结果。

下表列举了可使用的数据类型

类型 数字 备注 Double 1 String 2 Object 3 Array 4 Binarydata 5 Undefined 6 已废弃。 Objectid 7 Boolean 8 Date 9 Null 10 RegularExpression 11 JavaScript 13 Symbol 14 JavaScript(withscope) 15 32-bitinteger 16 Timestamp 17 64-bitinteger 18 Minkey 255 Querywith -1. Maxkey 127

范例

查询user集合中name为String类型的文档

>db.user.find({"name":{$type:2}}).pretty() { "_id":ObjectId("58e1d2f0bb1bbc3245fa754b"), "name":"liruihuan", "age":18, "sex":"man" } { "_id":ObjectId("58e1d2f0bb1bbc3245fa754d"), "name":"user1", "age":19, "sex":"man" } { "_id":ObjectId("58e1d2f0bb1bbc3245fa754e"), "name":"user2", "age":20, "sex":"woman" } { "_id":ObjectId("58e1d2f0bb1bbc3245fa754f"), "name":"user3", "age":19, "sex":"woman" } >

业精于勤,荒于嬉;行成于思,毁于随。

如果你觉得这篇文章不错或者对你有所帮助,可以通过右侧【打赏】功能,给予博主一点点鼓励和支持

本文内容总结:查询文档,1、find()和findOne(),2、条件操作符,3、$type操作符,

原文链接:https://www.cnblogs.com/liruihuan/p/6665222.html