3.1 KiB
3.1 KiB
神射手 - ER与查询逻辑
📅 从 MongoDB 与代码提取 | 2026-01-31
一、核心集合ER
1.1 KR.用户估值(统一画像)
集合: 用户估值
文档数: 1436万
索引: phone, name, email
字段:
phone: string # 手机号(多种格式)
phone_masked: string # 脱敏手机 134****0001
name: string # 姓名
user_level: string # 用户等级 S/A/B/C/D
user_evaluation_score: number # 估值分 0-5000+
province: string # 省份
city: string # 城市
source_channels: array # 数据来源 ['KR_手机']
unified_tags: array # 统一标签
traffic_pool: object # { pool_name: '黄金池' }
rfm_scores: object # { R, F, M }
1.2 KR_腾讯.QQ+手机
集合: QQ+手机
文档数: 7.05亿
索引: phone, qq
字段:
qq: string # QQ号
phone: string # 手机号
手机号: string # 同 phone
QQ号评分: number
手机号评分: number
省份: string
运营商: string
1.3 KR_存客宝.用户资产统一视图
集合: 用户资产统一视图
文档数: 21.6万
字段:
phone_masked: string
unified_tags: array # ['白银级用户', '存客宝用户']
traffic_pool: object # { pool_name: '白银池' }
rfm_scores: object # { user_level: '白银' }
1.4 KR_点了码.用户资产统一视图
集合: 用户资产统一视图
文档数: 1000
字段:
角色标签: string # 商户/用户
用户等级: string
phone: string
name: string
二、关键查询逻辑
2.1 手机号查询(多格式匹配)
db.用户估值.findOne({
$or: [
{ phone: "13800138000" },
{ phone: "+8613800138000" },
{ phone: "8613800138000" }
]
})
2.2 QQ→手机→画像
// 1. QQ查手机
db.getCollection('QQ+手机').findOne({ qq: "28533368" })
// 2. 手机查画像
db.用户估值.findOne({ phone: "138xxx" })
2.3 流量池分桶(采样)
db.用户估值.aggregate([
{ $sample: { size: 100000 } },
{ $match: { user_evaluation_score: { $exists: true, $gt: 0 } } },
{ $bucket: {
groupBy: '$user_evaluation_score',
boundaries: [0, 500, 1000, 2000, 3000, 10000],
default: 'other',
output: { count: { $sum: 1 } }
}}
], { maxTimeMS: 15000 })
2.4 人群圈选(按项目)
// 存客宝: 按流量池名
db.getCollection('用户资产统一视图').find({ 'traffic_pool.pool_name': '黄金池' })
// 点了码: 按角色标签
db.getCollection('用户资产统一视图').find({ 角色标签: '商户' })
// QQ: 按省份
db.getCollection('QQ+手机').find({ 省份: '福建' })
三、字段映射
| 业务字段 | MongoDB字段 | 多库别名 |
|---|---|---|
| 手机号 | phone, mobile, tel | 手机号 |
| 姓名 | name, cname | 姓名 |
| - | ||
| 估值分 | user_evaluation_score | - |
| 等级 | user_level | 用户等级 |
| 省份 | province | 省份 |