MongoDB文档查询find()

本文将介绍MongoDB中文档查询find()方法,以及find()方法的各个查询条件,以及如何使用这些查询条件。

MongoDB 查询文档使用 find() 方法。find()方法语法如下:

db.collection.find(query, projection)

参数说明:

  • query :可选,使用查询操作符指定查询条件。

  • projection :可选,使用投影操作符指定返回的键。查询时返回文档中所有键值, 只需省略该参数即可(默认省略)。

如果你需要以易读的方式来读取数据,可以使用 pretty() 方法,语法格式如下:

db.collection.find().pretty()

find()方法支持的基础条件如下:

  • 等于,例如:db.col.find({"name":"张三"}).pretty()

  • 小于($lt),例如:db.col.find({"age":{$lt:50}}).pretty()

  • 小于或等于($lte),例如:db.col.find({"age":{$lte:50}}).pretty()

  • 大于($gt),例如:db.col.find({"age":{$gt:50}}).pretty()

  • 大于或等于($gte),例如:db.col.find({"age":{$gte:50}}).pretty()

  • 不等于($ne),例如:db.col.find({"age":{$ne:50}}).pretty()

实例

# 准备数据
> db.users.insert({id:1, name:"张三"});
WriteResult({ "nInserted" : 1 })
> db.users.insert({id:2, name:"李四"});
WriteResult({ "nInserted" : 1 })
> db.users.insert({id:3, name:"王五"});
WriteResult({ "nInserted" : 1 })
> db.users.insert({id:4, name:"赵六"});
WriteResult({ "nInserted" : 1 })
> db.users.insert({id:5, name:"洪七"});
WriteResult({ "nInserted" : 1 })

> db.users.find()
{ "_id" : ObjectId("5e4948fecd56e9badcee416a"), "id" : 1, "name" : "张三" }
{ "_id" : ObjectId("5e494905cd56e9badcee416b"), "id" : 2, "name" : "李四" }
{ "_id" : ObjectId("5e49490dcd56e9badcee416c"), "id" : 3, "name" : "王五" }
{ "_id" : ObjectId("5e494917cd56e9badcee416d"), "id" : 4, "name" : "赵六" }
{ "_id" : ObjectId("5e49492acd56e9badcee416e"), "id" : 5, "name" : "洪七" }

# id 等于 3
> db.users.find({id:3});
{ "_id" : ObjectId("5e49490dcd56e9badcee416c"), "id" : 3, "name" : "王五" }

# id 小于 2
> db.users.find({id:{$lt:2}});
{ "_id" : ObjectId("5e4948fecd56e9badcee416a"), "id" : 1, "name" : "张三" }

# id小于等于2
> db.users.find({id: {$lte:2}});
{ "_id" : ObjectId("5e4948fecd56e9badcee416a"), "id" : 1, "name" : "张三" }
{ "_id" : ObjectId("5e494905cd56e9badcee416b"), "id" : 2, "name" : "李四" }

# id 大于 4
> db.users.find({id: {$gt: 4}});
{ "_id" : ObjectId("5e49492acd56e9badcee416e"), "id" : 5, "name" : "洪七" }

# id大于等于4
> db.users.find({id: {$gte: 4}});
{ "_id" : ObjectId("5e494917cd56e9badcee416d"), "id" : 4, "name" : "赵六" }
{ "_id" : ObjectId("5e49492acd56e9badcee416e"), "id" : 5, "name" : "洪七" }

# id不等于3
> db.users.find({id: {$ne: 3}});
{ "_id" : ObjectId("5e4948fecd56e9badcee416a"), "id" : 1, "name" : "张三" }
{ "_id" : ObjectId("5e494905cd56e9badcee416b"), "id" : 2, "name" : "李四" }
{ "_id" : ObjectId("5e494917cd56e9badcee416d"), "id" : 4, "name" : "赵六" }
{ "_id" : ObjectId("5e49492acd56e9badcee416e"), "id" : 5, "name" : "洪七" }

AND条件

MongoDB 的 find() 方法可以传入多个键(key),每个键(key)以逗号隔开,即常规 SQL 的 AND 条件。语法格式如下:

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

实例:查询id为2,且名称为“李四”的文档。如下:

# 数据源
> db.users.find();
{ "_id" : ObjectId("5e4948fecd56e9badcee416a"), "id" : 1, "name" : "张三" }
{ "_id" : ObjectId("5e494905cd56e9badcee416b"), "id" : 2, "name" : "李四" }
{ "_id" : ObjectId("5e49490dcd56e9badcee416c"), "id" : 3, "name" : "王五" }
{ "_id" : ObjectId("5e494917cd56e9badcee416d"), "id" : 4, "name" : "赵六" }
{ "_id" : ObjectId("5e49492acd56e9badcee416e"), "id" : 5, "name" : "洪七" }

# 查看id=2,name=李四的文档
> db.users.find({id:2, name:"李四"});
{ "_id" : ObjectId("5e494905cd56e9badcee416b"), "id" : 2, "name" : "李四" }

OR 条件

MongoDB OR 条件语句使用了关键字 $or,语法格式如下:

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

实例:查询id为1、3的文档

# 数据源
> db.users.find()
{ "_id" : ObjectId("5e4948fecd56e9badcee416a"), "id" : 1, "name" : "张三" }
{ "_id" : ObjectId("5e494905cd56e9badcee416b"), "id" : 2, "name" : "李四" }
{ "_id" : ObjectId("5e49490dcd56e9badcee416c"), "id" : 3, "name" : "王五" }
{ "_id" : ObjectId("5e494917cd56e9badcee416d"), "id" : 4, "name" : "赵六" }
{ "_id" : ObjectId("5e49492acd56e9badcee416e"), "id" : 5, "name" : "洪七" }

# 查询id等于1,或者id等于3的文档
> db.users.find({$or:[{id:1}, {id:3}]});
{ "_id" : ObjectId("5e4948fecd56e9badcee416a"), "id" : 1, "name" : "张三" }
{ "_id" : ObjectId("5e49490dcd56e9badcee416c"), "id" : 3, "name" : "王五" }

模糊查询

# 查询 name 包含“李”字的文档
> db.users.find({name:/李/});
{ "_id" : ObjectId("5e494905cd56e9badcee416b"), "id" : 2, "name" : "李四" }

# 查询 name 字段以“赵”字开头的文档
> db.users.find({name:/^赵/});
{ "_id" : ObjectId("5e494917cd56e9badcee416d"), "id" : 4, "name" : "赵六" }

# 查询 name 字段以“五”字结尾的文档
> db.users.find({name: /五$/});
{ "_id" : ObjectId("5e49490dcd56e9badcee416c"), "id" : 3, "name" : "王五" }

# 使用 . 匹配任何字符,+ 表示至少一个以上
> db.users.find({name: /.+/});
{ "_id" : ObjectId("5e4948fecd56e9badcee416a"), "id" : 1, "name" : "张三" }
{ "_id" : ObjectId("5e494905cd56e9badcee416b"), "id" : 2, "name" : "李四" }
{ "_id" : ObjectId("5e49490dcd56e9badcee416c"), "id" : 3, "name" : "王五" }
{ "_id" : ObjectId("5e494917cd56e9badcee416d"), "id" : 4, "name" : "赵六" }
{ "_id" : ObjectId("5e49492acd56e9badcee416e"), "id" : 5, "name" : "洪七" }

# 匹配任何字符,至少2个及以上
> db.users.find({name: /.{2,}/});
{ "_id" : ObjectId("5e4948fecd56e9badcee416a"), "id" : 1, "name" : "张三" }
{ "_id" : ObjectId("5e494905cd56e9badcee416b"), "id" : 2, "name" : "李四" }
{ "_id" : ObjectId("5e49490dcd56e9badcee416c"), "id" : 3, "name" : "王五" }
{ "_id" : ObjectId("5e494917cd56e9badcee416d"), "id" : 4, "name" : "赵六" }
{ "_id" : ObjectId("5e49492acd56e9badcee416e"), "id" : 5, "name" : "洪七" }
生活总会给你答案的,但不会马上把一切都告诉你。只要你肯等一等,生活的美好,总在你不经意的时候,盛装莅临。
0 不喜欢
说说我的看法 -
全部评论(
没有评论
关于
本网站专注于 Java、数据库(MySQL、Oracle)、Linux、软件架构及大数据等多领域技术知识分享。涵盖丰富的原创与精选技术文章,助力技术传播与交流。无论是技术新手渴望入门,还是资深开发者寻求进阶,这里都能为您提供深度见解与实用经验,让复杂编码变得轻松易懂,携手共赴技术提升新高度。如有侵权,请来信告知:hxstrive@outlook.com
公众号