利用Mongodb聚合(aggregate)来进行复杂查询的技巧

xiaoxiao2021-02-28  133

1、以多个key作为唯一键,分组查询

比如项目和主机地址(ip)有交叉关系,需要按ip和proj都不同的方式分组取出数据。 利用$group的_id对象分组,可以再用$project重命名。

db.Model.aggregate([ { $group:{ _id: { ip: '$ip', proj: '$proj' } } }, { $project:{ ip: '$_id.ip', proj: '$_id.proj' } } ]);

2、数据值转换

字符串等转为Boolean值。 $project: { isError: {$eq: ['$state', 'error']} } Boolean值转为数字1\0-1。 $project: { mistake: {$cmp: [false, '$isError']} }

常用于$group前,将值转为数字1/0,在$group中利用$sum统计数目。

转载请注明原文地址: https://www.6miu.com/read-36325.html

最新回复(0)