【发布时间】:2017-06-23 21:15:51
【问题描述】:
我尝试使用 C# 聚合框架将下一个 SQL 查询重写为 mongodb,但我不明白该怎么做。我需要联合一些结果。
SELECT TOP 100 RES.Agent, RES.Type, RES.Opens FROM ((SELECT UA.ClientDomain AS Agent, UA.Type AS Type, COUNT(*) AS Opens
FROM tReadConfirm AS RC INNER JOIN tUserAgent AS UA ON RC.UserAgentId = UA.Id
WHERE RC.UserId = 2654 AND RC.CampaignId = 27442 AND UA.Type = 1
GROUP BY UA.ClientDomain, UA.Type)
UNION
(SELECT UA.Family AS Agent, UA.Type AS Type, COUNT(*) AS Opens
FROM tReadConfirm AS RC INNER JOIN tUserAgent AS UA ON RC.UserAgentId = UA.Id
WHERE RC.UserId = 2654 AND RC.CampaignId = 27442 AND UA.Type <> 1
GROUP BY UA.Family, UA.Type)) AS RES
ORDER BY RES.Opens DESC
这是我的起始代码,但它不能满足我的需要
db.analytics.aggregate(
{
$match: { UserId: 4749, CampaignId: 93178}
},
{
$group :
{
_id :
{
"Family" : "$userAgent.Family",
"Type" : "$userAgent.Type",
"ClientDomain" : "$userAgent.ClientDomain",
} ,
"Opens":
{
$sum : 1
}
}
},
{$sort :{"Opens":-1}}
)
【问题讨论】:
标签: c# mongodb aggregation-framework mongodb-.net-driver