Mongodb一般使用的是find进行查询文档
关于find:
- find 是Mongodb中查询数据的基本指令,相当于SQL中的select
- find返回的游标
find示例:
db.movies.find({"year":1975}) //单条件查询
db.movies.find({"year":1989,"titile":"Batman"}) //多条件and查询
db.movies.find({$and:[{"title":"batman"},{"category":"action"}]}) //and查询的另一种形式
db.movies.find({$or:[{"year":1989},{"title":"batman"}]}) //多条件or查询
db.movies.find({"title":/^B/}) //按正则表达式查找
查询条件对照表:
a=1 AND b=1 {a:1,b:1} 或者{$and: [{a:1},{b:1}]}
a=1 OR b=1 {$or :[{a:1},{b:1}]}
a IS NULL {a:{$exists:false}}
a IN (1,2,3) {a:{$in:[1,2,3]}}
- $lt:存在并小于
- $lte:存在并小于等于
- $gt:存在并大于
- $gte:存在并大于等于
- $ne:不存在或存在但不等于
- $in:存在并在指定数组中
- $nin:不存在或不在指定数组中
- $or:匹配两个或多个条件中的一个
- $and:匹配全部条件
使用find 支持使用"field.sub_field"的形式查询子文档。
> db.fruit.insertOne({name:"apple",from:{count:"china",province:"Guangdong"}}) //插入子文档 { "acknowledged" : true, "insertedId" : ObjectId("625a7016a1fbd7dca4520187") } > > > db.fruit.find().pretty() //查询文档 { "_id" : ObjectId("625a67daa1fbd7dca4520184"), "name" : "apple", "from" : "China" } { "_id" : ObjectId("625a67daa1fbd7dca4520185"), "name" : "pear" } { "_id" : ObjectId("625a67daa1fbd7dca4520186"), "name" : "orange" } { "_id" : ObjectId("625a7016a1fbd7dca4520187"), "name" : "apple", "from" : { "count" : "china", "province" : "Guangdong" } }
这里我们怎样来查看子文档
> db.fruit.find({"from.count":"china"}) { "_id" : ObjectId("625a7016a1fbd7dca4520187"), "name" : "apple", "from" : { "count" : "china", "province" : "Guangdong" } } //这种是正确的 > > db.fruit.find({"from":{count:"china"}}) //这种是错误的,查出来的是空值。。。
这里可以看到如果想要查询子文档的话,必须要用字段1.字段2 : "value" 方式来进行查询。。。