一、基本语法

1.全部遍历
var cursor=db.<collection>.find();
cursor.forEach(printjson)
2.查询
//排序
db.<collection>.find().sort({_id:-1})//根据id倒序

//分页
db.<collection>.find().limit(2).skip(0)  //第1页 2条数据

//只返回部分字段
db.<collection>.find({},{title:1,_id:0}) //1为显示字段 0为不显示字段

//查询案例
db.Test.find({likes:{$gt:90}})

//查询限定符
$eq 等于
$gt 大于
$gte 大于等于
$in 包含
$lt 小于
$lte 小于等于
$ne 不等于
$nin 不包含

//逻辑操作符号
$and 与
$or 或
$not 非
$nor 即非

//数组操作符
$all 全包含
$elemMatch 仅一个元素匹配
$size 大小匹配
3.更新
//语法 
db.<collection>.update(条件,更新内容,描述更新选项)
//描述更新选项:multi(更新多个选项,不填默认第一天更新返回,upsert(不存在的话,进行添加)

//查询一条、查询多条、替换一条
db.<collection>.updateOne(条件,更新内容)
db.<collection>.updateMany(条件,更新内容)
db.<collection>.replaceOne(条件,替换内容)

//查询并修改返回
db.<collection>.findAndModify({query:{},update:{},new:true})
db.<collection>.findOneAndUpdate({query:{},update:{},new:true})
db.<collection>.findOneAndReplace({query:{},update:{},new:true})
//默认返回旧数据,添加new属性返回新数据

//更新操作符
$set 指定一个键并更新,不存在则创建
$unset 删除一个键 {$unset:{field:1}}
$inc 对数值类型进行增减
$push 追加到数组,不存在进行初始化
$pushAll 追加多个值到数组,不存在则进行初始化
$pull 从数组中删除指定元素
$addToSet 添加元素到数组中,具有排重功能
$pop 删除数组的第一个或者最后一个 {$pop:{field:1}}
$rename 修改字段名称
$bit 位操作符 integer类型
4.删除
//语法
db.<collection>.remove(<query>,<justOne>) //justOne为true 默认删除第一条
//删除单条、删除多条、删除全部
db.<collection>.deleteOne(<query>) 
db.<collection>.deleteMany(<query>) 
db.<collection>.drop() 

//返回并删除
db.<collection>.findOneAndDelete(<query>)
5.聚合
//案例
db.Test.aggregate([
    {
        $group:{_id:"$by_user",total:{$sum:1}},//$by_user分组字段
    },
    {
        $match:{total:{$gt:1}} //过滤
    },
    {
        $project:{ //设置返回字段,建立在group基础上,1包含 0不包含
            "_id": 0,
			"by_user":1,
			"total":1
        } 
    },
    {
        $sort:{total:-1}  //排序
    },
    {
        $limit:1 //限制返回数量
    },
    {
        $skip:0 //跳过指定数量的文档,并返回余下的文档
    }
])

//数组拆分
$unwind

//聚合表达式
$sum 计算总和
$avg 计算平均值
$min 获取集合中所有文档对应值得最小值
$max 获取集合中所有文档对应值得最大值
$push 在结果文档中插入值到一个数组中
$addToSet 在结果文档中插入值到一个数组中,但不创建副本
$first 根据资源文档的排序获取第一个文档数据
$last 根据资源文档的排序获取最后一个文档数据
6.查询集合大小
db.Test.stats()