一、基本操作
# 查找全部数据 db.集合名称.find() # 根据条件查找数据 db.集合名称.find({条件文档}) # 根据条件查找一条数据 db.集合名称.findOne({条件文档}) # 美化数据的输出格式 db.集合名称名称.find({条件文档}).pretty() # 注意: findOne()不能用pretty()
二、比较运算符
等于: 默认的情况 小于: $lt 小于等于: $lte 大于: $gt 大于等于: $gte 不等于: $ne # 例子 db.stu.find({age: {$gt: 18}})
三、范围运算符
$in 在范围内 $nin 不在范围内 # 例子 db.集合名称.find({age: {$in: [18, 24, 26]}}) db.集合名称.find({age: {$nin: [18, 40, 45]}})
四、逻辑运算符
and 在json中写多个条件即可 db.stu.find({age: {$gte: 18}, hometown: '华山'}) or 使用$or,值为数组,数组中的每个元素是json db.stu.find({$or: [{age: {$gt: 18}}, {gender: true}]}) or 和 and 一起使用 db.stu.find({$or: [{gender: false}, {age: {$lt: 30}}], hometown: "桃花岛"})
五、正则表达式
db.集合名称.find({sku: /正则表达式/}) db.集合名称.find({sku: {$regex: '正则表达式'}) # 推荐使用第二种,代码可读性高 例子 db.products.find({sku: /^3.*/}) db.products.find({sku: {$regex: '3$'}})
六、limit和skip
# limit查询文档的数量,与mysql中的limit相似 db.集合名称.find().limit(数量) # skip跳过文档的数量并输出余下的结果, 与mysql中的offset相似 db.集合名称.find().skip(num) 注意: 先limit,再skip效率高
七、自定义查询
db.集合名称.find({$where: 匿名函数}) # 例子 db.stu.find({$where: function(){ return this.gender == false }}) 注意: 匿名函数的语法和JS一样
八、投影
作用: 在查询的返回值结果中,选择自己需要的字段 格式: db.集合名称.find({查询}, {投影}) 规则: 参数: 为字段的值 值: 1为显示,0不显示 例子 db.stu.find({gender: false}, {_id: 0, name: 1, age: 1}) 注意:如果只设置_id = 0,那么其它字段全部显示
九、排序
sort() db.集合名称.find().sort({字段: value}) value=1,是正序 value=-1, 是倒序 例子 # 先根据age排序,再根据name排序 db.stu.find().sort({age: 1, name: -1})
十、统计数量(count)
count() db.集合名称.count({条件}) 或 db.集合名称.find().count() # 例子 db.stu.find({gender: false}).count() db.stu.count({age: {$gt: 18}})
十一、去重(distinct)
db.集合名称.distinct('去重字段', {条件}) # 例子 db.stu.distinct('hometown', {age: {$lte: 18}}) # 结果 [ "桃花岛", "蒙古", "大理" ] 注意: 1. 去重字段,必须要用引号 2. 去重字段和条件之间要用逗号隔开 3. 获取的结果是列表