1. 本际云推荐 - 专业推荐VPS、服务器,IDC点评首页
  2. 云主机运维
  3. VPS运维

Mongodb聚合查询及在日常运维中的使用

小本本介绍

我是本际云服务器推荐网的小编小本本,今天为大家介绍Mongodb聚合查询及在日常运维中的使用。

Mongodb聚合查询及在日常运维中的使用

Mongodb聚合查询介绍

Mongodb是一种基于JSON文档的NOSQL数据库,查询语言我们称之为MQL,其复杂查询与多集合连接查询等采用聚合查询。Mongodb聚合架构是基于管道,按照stage顺序执行。下面是一个聚合查询的格式:

db.collection.aggregate([{stage},{stage},……,{stage}]);

聚合查询详细讲解

Mongodb的聚合查询处理过程是基于管道,类似于shell命令的管道。聚合查询处理过程包括转换成SQL,聚合stage和常用运算符等。常用stage包括match、project、group、lookup和unwind等。常用运算符包括eq、gt、gte、lt、lte、and、or、not、in、split、sum、avg、min和max等。这些都是在Mongodb的聚合查询过程中非常常用且必不可少的要素。

聚合查询示例

下面我们来看两个聚合查询的实例。

例1:按照item进行分组统计quantity的和。

对应聚合查询如下:

db.c1.aggregate([{ {$group: { _id: “$item”, sum_quantity: { $sum: “$quantity” } }}}]);

例2:查询学生年龄大于等于16岁并按年龄升序输出,同时输出学生所在的班级信息。

对应聚合查询如下:

db.student.aggregate([{ $lookup: { from: “class”, localField: “class_id”, foreignField: “id”, as: “class_info” }},{$unwind:”$class_info”},{$project:{“class_info._id”:0,”class_info.id”:0}},{$match:{age:{$gte:16}}},{$sort:{age:1}}]).pretty();

聚合查询在日常运维中的使用

除少量配置集合外,Mongodb中无相关的性能视图。其中,早期版本只有db.currentOp()命令可查看会话信息,从3.6版开始提供$currentOpstage,可更加灵活的获取会话信息。

在日常运维中,我们可以利用聚合查询来查看:当前的会话中,以客户端IP地址分组统计连接数、当前活动会话正在执行的操作、是否有会话在等待锁以及存在的锁的级别等。这些信息对于Mongodb的性能监控、性能优化、问题排查等都具有重要的意义。

以上就是本次分享的Mongodb聚合查询及在日常运维中的使用介绍,希望对您有所帮助。

原创文章,作者:小编小本本,如若转载,请注明出处:https://www.benjiyun.com/yunzhujiyunwei/vps-yunwei/5998.html