gpt4 book ai didi

mongodb - Mongodb聚合框架: group users by age

转载 作者:IT老高 更新时间:2023-10-28 13:25:56 25 4
gpt4 key购买 nike

我有一个存储在 mongo 中的用户群。用户可以记录他们的出生日期。我需要运行一个按年龄聚合用户的报告。

我现在有一个按出生年份对用户进行分组的管道。但是,这还不够精确,因为大多数人不是在 1 月 1 日出生的;因此,即使他们出生于 1970 年,也可能还不到 43 岁。

db.Users.aggregate([
{ $match : { "DateOfBirth" : { $exists : true} } },
{ $project : {"YearOfBirth" : {$year : "$DateOfBirth"} } },
{ $group : { _id : "$YearOfBirth", Total : { $sum : 1} } },
{ $sort : { "Total" : -1 } }
])

您知道是否可以在聚合框架内执行某种算术来准确计算用户的年龄?还是仅使用 MapReduce 可以做到这一点?

最佳答案

似乎在刚刚发布的新 Mongo 2.4 版本中一切都可以实现,支持额外的 Date 操作(即“$subtract”)。

我是这样做的:

db.Users.aggregate([
{ $match : { "DateOfBirth" : { $exists : true} } },
{ $project : {"ageInMillis" : {$subtract : [new Date(), "$DateOfBirth"] } } },
{ $project : {"age" : {$divide : ["$ageInMillis", 31558464000] }}},
// take the floor of the previous number:
{ $project : {"age" : {$subtract : ["$age", {$mod : ["$age",1]}]}}},
{ $group : { _id : "$age", Total : { $sum : 1} } },
{ $sort : { "Total" : -1 } }
])

关于mongodb - Mongodb聚合框架: group users by age,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15496780/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com