python - MongoDB count 总共三个字段
问题描述
我是 MongoDB 的初学者。我在 MongoDB 集合中有 2000 万个文档。单个文档的示例:
我想获取每个 user_screen_name 的总推文计数、朋友计数和关注者计数以及每个 user_screen_name 的帐户创建年份。
我试过这个:
user_details_pipeline = [{
"$project": {
"_id": 0,
"user_mentions": 1,
"user_followers_count": 1,
"user_friends_count": 1,
"user_account_creation": 1
}
}, {
"$unwind": "$user_mentions"
}, {
"$group": {
"_id": "$user_mentions.screen_name",
"count": {
"$sum": 1
}
}
}, {
"$sort": {
"count": -1
}
}
]
但这不会查询推文、关注者、朋友和帐户创建日期的数量,只查询用户被提及的次数。有人可以帮忙吗?
一个输出示例:
{"user_screen_name": "BorisJohnson", "user_followers_count": 1000000, "user_friends_count": 50, "total_tweets": 50000, "user_account_creation": 2012}
解决方案
如果您的日期不是日期类型(它确实应该是!),您可以使用以下聚合查询,使用$substr(切出年份)和$min(获取最早的年份)
result = db.mycollection.aggregate([
{'$group': {
'_id': '$user_screen_name',
'user_followers_count': {'$sum': '$user_followers_count'},
'user_friends_count': {'$sum': '$user_friends_count'},
'total_tweets': {'$sum': '$user_tweets_count'},
'user_account_creation': {'$min': {'$substr': ['$user_account_creation', 26, 4]}}
}},
{'$project': {
'_id': 0,
'user_screen_name': '$_id',
'user_followers_count': 1,
'user_friends_count': 1,
'total_tweets': 1,
'user_account_creation': 1
}}
])
推荐阅读
- mysql - 在 SQL 数据库中存储一个范围/多个范围(上限可能未知)
- oracle - 从 Oracle CLOB 创建新行并写入 HDFS
- reactjs - 为什么我在我的 axios GET 请求中得到 [object Object]?
- angular - nginx转发器参数到角度
- sql - 接受 id 并返回表的函数 - 如何为多个 id 调用它?
- paypal - Paypal 的四舍五入税额
- javascript - 将数组追加到本地存储对象
- c# - 错误 CS0118 'TestBuilder' 是命名空间,但用作类型
- css - Stylelint 错误 - 前导装饰器必须附加到类声明
- events - 谷歌地图点击事件不适用于点击标记