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" : "洪七" }
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" : "李四" }
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" : "洪七" }