1. 查找所有文档
db.c.find()
2. 按照简单类型查找(要注意类型匹配)
db.user.find({"age":27}) //年龄是数字,不需要引号
db.user.find({"username":"joe"}) //用户名是字符串,需要引号
3. 组合条件查询
db.user.find("username":"joe", "age":27) //可以2个条件或者更多组合查询,条件用逗号分隔
4. 指定要返回的键
db.user.find({}, {"username":1,"email":1}) //只要返回用户名和邮箱,前面的过滤条件没有指定,也就是find可以看成一个函数,第一个入参是条件,第二个入参是需要返回哪些字段
db.user.find({}, {"age":0}) //表示年龄不返回,其他的都返回
5. 范围查找
db.user.find({"age": {"$gte": 18, "$lte": 30} }) //查找年龄介于18到30岁之间的用户 $lt 小于 $lte 小于等于 $gt 大于 $gte 大于等于
6. 不等于查找
db.user.find({"username": {"$ne":"joe"} }) //查找姓名不为joe的用户
7. 查找中奖人信息
db.raffle.find({"$or": [{"winner":true}, {"ticket_no":{"$in":[739,874,984]}} ] }) //in值后面是数组(可以是不同类型字段),or后面的值也是数组。
8. null 查询
db.find ({"z" : {"$in": [null], "$exists": true} }) //由于没有$eq 等于操作符,用in替代。 另外要加exists为true,因为首先要存在,其次,才是空
9. 数组查询
db.food.insert({“fruits”:["apple","banana","peach"]})
db.food.find({"fruits":"apple"}) //能够匹配文档,查询包含苹果的记录
db.food.find({"fruits":{"$all":["apple", banana]}}) //能够匹配文档,查询包含苹果和香蕉的记录
db.food.find({"fruits.2":“peach”}) //能够匹配文档,查询数组第3个元素为桃子的记录
10. 查询内嵌文档:
db.people.find({"name.first":"joe", "name.last":"schema"}) //用点分隔
db.people.find({"comments": {"$elemMatch":{"author":"joe","score":{"$gte":5}}}}) //查找joe评论分数大于5分的文章,一组条件要用elemMatch
11. 分页与排序
db.stock.find({"desc":"mp3"}).limit(50).skip(50).sort({"price":-1}) //查找描述为MP3的文档,显示50条,先跳过50条(显示第二页)。然后按照price降序。skip过多会有效率问题