MongoDB 数据库操作

场景:

已知广告点击数据的记录已经存在,数据统计在mongodb中,现在要统计广告列表pv和uv。

思路:

这个时候就想到mysql的聚合查询group、count、distinct,但是于是就找了好多文档,发现mongodb的语法和mysql还不一样,但是思路是一样的,于是各种搜索总结下来

关键代码

db.xxw_link_log.aggregate([
    {
        $match: {
            brand: 'test',
            _day_key: '20220211'
        }
    },
    {
        $group: {
            "_id": {
                "link_id": "$link_id",
                "alipay_id": "$alipay_id",
                
            },
            
        }
    },
    {
        $group: {
            "_id": "$_id.link_id",
            "distinctV": {
                "$addToSet": {
                    "value": "$_id.alipay_id",
                    "numberOfValues": "$count"
                }
            },
            count: {
                $sum: 1
            }
        }
    },
    {
        "$project": {
            "_id": 0,
            "link_id": "$_id",
            "distinctV": 1,
            "count": 1
        }
    }
])

返回结果如下
在这里插入图片描述
集合 “distinctV” 数据如下
在这里插入图片描述

解释

mongodb 中的 aggregate 代表聚合工具之一

常用操作

表达式描述
$match用于过滤数据,只输出符合条件的文档。$match使用MongoDB的标准查询操作。
$project修改输入文档的结构。可以用来重命名、增加或删除域,也可以用于创建计算结果以及嵌套文档。
$limit用来限制MongoDB聚合管道返回的文档数。
$skip在聚合管道中跳过指定数量的文档,并返回余下的文档。
$unwind将文档中的某一个数组类型字段拆分成多条,每条包含数组中的一个值。
$group将集合中的文档分组,可用于统计结果。
$sort将输入文档排序后输出。
$lookup联表查询
$geoNear输出接近某一地理位置的有序文档。
facet/bucket分类搜索(MongoDB 3.4以上支持)
未完待续

参考文档:
MongoDB聚合(aggregate)常用操作及示例
用 MongoDB 查询来选择 distinct 和 count?
mongoDB中聚合(aggregate)的具体使用
mongodb 高级聚合查询

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值