वांछित परिणाम प्राप्त करने के लिए, उप क्वेरी से शुरू होने वाली SQL क्वेरी को तोड़कर प्रारंभ करें:
Select *
from tblData
Where TFN in (Select TFN From @tmpTFNList) and TrendDate between @StartDate AND @EndDate
समकक्ष मोंगो क्वेरी इस प्रकार है:
db.getCollection("_core.data").aggregate([
{
"$match": {
"TFN": { "$in": tmpTFNList },
"TrendDate": {
"$gte": startDate,
"$lte": endDate
}
}
}
])
$group
के बराबर
Select TFN, Max(Impressions) MaxImpression
from tblData
Where TFN in (Select TFN From @tmpTFNList) and TrendDate between @StartDate AND @EndDate
Group by TFN
अनुसरण करता है
db.getCollection("_core.data").aggregate([
{
"$match": {
"TFN": { "$in": tmpTFNList },
"TrendDate": {
"$gte": startDate,
"$lte": endDate
}
}
},
{
"$group": {
"_id": "$TFN",
"MaxImpression": { "$max": "$Impression" }
}
}
])
शीर्ष 5 क्वेरी
Select Top 5 a.TFN, a.MaxImpression as MaxCount from (
Select TFN, Max(Impressions) MaxImpression
from tblData
Where TFN in (Select TFN From @tmpTFNList)
and TrendDate between @StartDate AND @EndDate
Group by TFN
) a
$ के साथ संभव बनाया गया है सीमा
ऑपरेटर और फ़ील्ड चयन $प्रोजेक्ट
मंच के रूप में
db.getCollection("_core.data").aggregate([
{ /* WHERE TFN in list AND TrendDate between DATES */
"$match": {
"TFN": { "$in": tmpTFNList },
"TrendDate": {
"$gte": startDate,
"$lte": endDate
}
}
},
{ /* GROUP BY TFN */
"$group": {
"_id": "$TFN",
"MaxImpression": { "$max": "$Impression" }
}
},
{ "$limit": 5 }, /* TOP 5 */
{ /* SELECT a.MaxImpression as MaxCount */
"$project": {
"TFN": "$_id",
"_id": 0,
"MaxCount": "$MaxImpression"
}
}
])
अपडेट करें
इस में नमूने से वांछित परिणाम प्राप्त करने के लिए संपादित करें
, आपको एक अतिरिक्त $ चाहिए क्रमबद्ध करें
$group<से पहले पाइपलाइन /कोड>
जहाँ आप दस्तावेज़ों को TrendDate
. के अनुसार क्रमित करते हैं और इंप्रेशन
फ़ील्ड, दोनों अवरोही क्रम में।
फिर आपको <कोड का उपयोग करना होगा>$पहले
$group में संचायक ऑपरेटर
अधिकतम प्रभाव प्राप्त करने के लिए पाइपलाइन चरण क्योंकि आपके पास अपनी पाइपलाइन में दस्तावेज़ों की एक ऑर्डर की गई स्ट्रीम होगी।
संशोधित समग्र संचालन को इस प्रकार चलाने पर विचार करें:
db.getCollection('collection').aggregate([
{
"$match": {
"TFN": { "$in": tmpTFNList },
"TrendDate": {
"$gte": startDate,
"$lte": endDate
}
}
},
{ "$sort": { "TrendDate": -1, "Impression": -1 } },
{
"$group": {
"_id": "$TFN",
"MaxImpression": { "$first": "$Impression" }
}
},
{ "$limit": 5 },
{
"$project": {
"TFN": "$_id",
"_id": 0,
"MaxCount": "$MaxImpression"
}
}
])
नमूना आउटपुट
/* 1 */
{
"TFN" : 84251456,
"MaxCount" : 22
}
/* 2 */
{
"TFN" : 84251455,
"MaxCount" : 35
}