MongoDB的一些高级语法
-
- MongoDB的一些高级语法
- AND 和 OR操作
- AND操作
- OR操作
- 嵌入式文档
- 插入
- 查询
- 数组(Array)字段
- 插入
- 查询
- 聚合(Aggregation)
- 筛选数据
- 修改字段
- AND 和 OR操作
- 注意事项
- 包括现有字段
- 取消_id字段
- 排除字段
- 分组操作
- 去重
- 分组操作运算
- 拆分数组
- 联集合查询
- 参考资料
- MongoDB的一些高级语法
- $project:修改输入文档的结构。可以用来重命名、增加或删除域,也可以用于创建计算结果以及嵌套文档。
- $match:用于过滤数据,只输出符合条件的文档。$match使用MongoDB的标准查询操作。
- $limit:用来限制MongoDB聚合管道返回的文档数。
- $skip:在聚合管道中跳过指定数量的文档,并返回余下的文档。
- $unwind:将文档中的某一个数组类型字段拆分成多条,每条包含数组中的一个值。
- $group:将集合中的文档分组,可用于统计结果。
- $sort:将输入文档排序后输出。
- $geoNear:输出接近某一地理位置的有序文档。
下面我将在一些数据的处理方面来介绍一下其中的一些命令。
菜鸟教程):| 表达式 | 描述 | 实例 |
|---|---|---|
| $sum | 计算总和。 | db.mycol.aggregate([{$group : {_id : "$by_user", num_tutorial : {$sum : "$likes"}}}]) |
| $avg | 计算平均值 | db.mycol.aggregate([{$group : {_id : "$by_user", num_tutorial : {$avg : "$likes"}}}]) |
| $min | 获取集合中所有文档对应值得最小值。 | db.mycol.aggregate([{$group : {_id : "$by_user", num_tutorial : {$min : "$likes"}}}]) |
| $max | 获取集合中所有文档对应值得最大值。 | db.mycol.aggregate([{$group : {_id : "$by_user", num_tutorial : {$max : "$likes"}}}]) |
| $push | 在结果文档中插入值到一个数组中。 | db.mycol.aggregate([{$group : {_id : "$by_user", url : {$push: "$url"}}}]) |
| $addToSet | 在结果文档中插入值到一个数组中,但不创建副本。 | db.mycol.aggregate([{$group : {_id : "$by_user", url : {$addToSet : "$url"}}}]) |
| $first | 根据资源文档的排序获取第一个文档数据。 | db.mycol.aggregate([{$group : {_id : "$by_user", first_url : {$first : "$url"}}}]) |
| $last | 根据资源文档的排序获取最后一个文档数据 | db.mycol.aggregate([{$group : {_id : "$by_user", last_url : {$last : "$url"}}}]) |
大家看那个实例估计也明白怎么操作了。首先我们先去重,然后再指定名字,最后进行计算:
计算的方法:{$关键字:$已有的字段名}
下面便是计算age的平均值,然后以“aver_age”返回。
https://www.runoob.com/mongodb/mongodb-tutorial.html原则上,“$sum”和“$avg”的值对应的值应该是数字,如果使用非数字,则“$sum”会返回0,“$avg”会返回“null”。注意,字符串是可以比较大小的。其中,“$sum”的值还可以使用数字“1”,例如
"count":{"$sum":1},则返回的就是每个分组有多少条记录。
docs4dev:https://www.docs4dev.com/docs/zh/mongodb/v3.6/reference