一、find
find查询返回一个集合中文档的子集
1.find() 查询出匹配集合的全部内容
db.study.find()
2.find({"key":"value"}) and 条件 find({"key":"value","key2":"value2"})
db.study.find({"name":"李四1"})
3.指定需要返回的键
db.study.find({name:"王五"},{"name":1,"info.age":1}) 结果: { "_id" : ObjectId("5f1fdcb19da18cf3e2cf8078"), "info" : { "age" : 19 }, "name" : "王五" }
4.指定不需要返回的键
db.study.find({name:"王五"},{"name":0}) 结果: { "_id" : ObjectId("5f1fdcb19da18cf3e2cf8078"), "address" : "北京,门头沟", "info" : { "age" : 19, "sex" : 1 } }
二、查询条件
1.查询条件
$lt : < ; $lte :<= ; $gt :> ; $gte: >= ;
db.study.find({"age":{"$gte":5,"$lte":8}})
$ne 不等于某个特定值
db.blog.find({title:{"$ne":"test2"}})
2.OR查询
a.$in 包含 同一个键里面的包含
db.blog.find({title:{"$in":["test2","test3"]}})
b.$nin 不包含
db.study.find({"address":{"$nin":["shanghai"]}})
c.$or对于不同键的包含
db.study.find({"$or":[{"address":"shanghai"},{"age":21}]})
三、特定类型的查询
1.null
如果仅想匹配键值为null的文档,既要检查该键的值是否为null,还要通过$exists 判定键值已存在
db.study.find({"sex":{"$in":[null],"$exists":true}})
2.正则表达式
a.区分大小写
db.study.find({"name":/Li/})
b.不区分大小写
db.study.find({"name":/Li/i})
c.添加前缀
db.study.find({"name":/^test/})
3.查询数组
a.$all多个元素匹配
db.study.find({lovly:{"$all":["food","play"]}})
lovly中既要有food 还要有 play 的值