MongoDB查询

一、基本操作

# 查找全部数据
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}]})

orand 一起使用
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. 获取的结果是列表
原文地址:https://www.cnblogs.com/wt7018/p/11913117.html