MongoDB的一些高级语法


 

 

    • MongoDB的一些高级语法
      • AND 和 OR操作
        • AND操作
        • OR操作
      • 嵌入式文档
        • 插入
        • 查询
      • 数组(Array)字段
        • 插入
        • 查询
      • 聚合(Aggregation)
        • 筛选数据
        • 修改字段
    • 注意事项
      • 包括现有字段
      • 取消_id字段
      • 排除字段
      • 分组操作
        • 去重
        • 分组操作运算
        • 拆分数组
      • 联集合查询
      • 参考资料
菜鸟教程的一些关键字的用法。

  • $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”返回。

 


 

原则上,“$sum”和“$avg”的值对应的值应该是数字,如果使用非数字,则“$sum”会返回0,“$avg”会返回“null”。注意,字符串是可以比较大小的。其中,“$sum”的值还可以使用数字“1”,例如"count":{"$sum":1},则返回的就是每个分组有多少条记录。

https://www.runoob.com/mongodb/mongodb-tutorial.html

docs4dev:https://www.docs4dev.com/docs/zh/mongodb/v3.6/reference