MongoDB聚合查询实战:购物记录分析
MongoDB聚合查询实战:购物记录分析
本文将以购物记录为例,讲解如何使用MongoDB的聚合查询功能进行数据分析。
数据准备
假设我们有两个集合:
shoppingRecords:存储购物记录,包含以下字段:serialNum:流水号shopperId:购物者IDdate:购物日期shoppingList:购物清单
shopper:存储购物者信息,包含以下字段:shopperId:购物者IDphone:电话号码shoppingTimes:购物次数
以下是一些示例数据:
db.shoppingRecords.insertMany([
{ serialNum: '001', shopperId: '1001', date: '20230519', shoppingList: ['apple', 'banana', 'orange'] },
{ serialNum: '002', shopperId: '1002', date: '20230612', shoppingList: ['romaine lettuce', 'ham sausage', 'eggs'] },
{ serialNum: '003', shopperId: '1003', date: '20230613', shoppingList: ['chicken', 'beef', 'pork'] },
// ... other shopping records
]);
db.getCollection('shopper').insertMany([
{shopperId:'1001',phone:'13777554321', shoppingTimes:8},
{shopperId:'1002',phone:'13876541234', shoppingTimes:12},
{shopperId:'1003',phone:'13919911225', shoppingTimes:36},
{shopperId:'1004',phone:'12563698746', shoppingTimes:7}
])
聚合查询示例
-
查找特定购物者的购物记录
查找购物者ID为'1002'的购物记录,仅显示日期和购物清单,并将购物清单展开,每一件商品作为一行记录展示,并将商品名字这一列重命名为'commodity':
db.shoppingRecords.aggregate([ { $match: { shopperId: '1002' } }, { $project: { _id: 0, date: 1, shoppingList: 1 } }, { $unwind: '$shoppingList' }, { $project: { date: 1, commodity: '$shoppingList' } } ]) -
展示每位顾客的购物流水号和电话号码
使用
$lookup操作符关联shoppingRecords和shopper集合,展示每位顾客的shopperId、购买流水号serialNum和电话号码phone,其中serialNum流水号用列表呈现:db.shoppingRecords.aggregate([ { $lookup: { from: 'shopper', localField: 'shopperId', foreignField: 'shopperId', as: 'shopperInfo' } }, { $project: { _id: 0, shopperId: 1, serialNum: 1, phone: { $arrayElemAt: ['$shopperInfo.phone', 0] } } } ]) -
统计每个购物者的购物次数
使用
$group操作符按照shopperId分组,并使用$sum操作符统计每个购物者的购物次数:db.shoppingRecords.aggregate([ { $group: { _id: '$shopperId', totalShoppingTimes: { $sum: 1 } } } ]) -
找到每个购物者最新的一个购物流水号
使用
$sort操作符按照日期降序排序,然后使用$group操作符按照shopperId分组,并使用$first操作符获取每个分组的第一个serialNum,即最新的购物流水号:db.shoppingRecords.aggregate([ { $sort: { date: -1 } }, { $group: { _id: '$shopperId', latestSerialNum: { $first: '$serialNum' } } } ])
总结
本文介绍了如何使用MongoDB聚合查询进行购物记录分析,包括查找特定购物者的购物记录、展示每位顾客的购物流水号和电话号码、统计购物次数以及找到每个购物者最新的购物流水号等。聚合查询功能强大且灵活,可以根据实际需求进行各种复杂的数据分析。
原文地址: https://www.cveoy.top/t/topic/5QU 著作权归作者所有。请勿转载和采集!