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