我正在尝试使用Mongo中的聚合框架来计算每天转发和推文的数量,但是我有问题。我可以分开做,但是当我尝试使用查询时,我没有得到任何结果。
我使用下一个聚合框架每天获取转发的数量
db.tweets.aggregate(
[
{ $match: { "retweeted_status.id": {"$exists":true} }}
{
$group:
{
_id: {
day2: { $dayOfMonth: "$created_ts"},
month2 : {$month : "$created_ts" },
year2: { $year: "$created_ts" },
},
totalReTweetsPerDay: { $sum: 1 },
}
},
{ $match: { "retweeted_status.id": {"$exists":true} }}
]
)
我使用下一个代码每天获取推文数量
db.tweets.aggregate(
[
{
$group:
{
_id: {
day: { $dayOfMonth: "$created_ts"},
month : {$month : "$created_ts" },
year: { $year: "$created_ts" },
},
totalReTweetsPerDay: { $sum: 1 },
}
},
{$sort : { _id : -1}},
{$out : "daily_tweets" }
]
)
我想加入这两个操作。我试图加入它只在另一个内部浏览一个,但它不起作用。
非常感谢
您可以尝试以下聚合。唯一要注意的是ifNull
操作员的包含,该操作员检查是否存在字段。
db.tweets.aggregate(
[{
$group: {
_id: {
day: {
$dayOfMonth: "$created_ts"
},
month: {
$month: "$created_ts"
},
year: {
$year: "$created_ts"
},
},
totalReTweetsPerDay: {
$sum: {
$cond: [{
$ifNull: ["$retweeted_status.id", false]
}, 1, 0]
}
},
totalTweetsPerDay: {
$sum: 1
}
}
}, {
$sort: {
_id: -1
}
}, {
$out: "daily_tweets"
}]
)