[{"data":1,"prerenderedAt":3949},["ShallowReactive",2],{"navigation":3,"\u002Fadvanced\u002Faggregation":151,"\u002Fadvanced\u002Faggregation-surround":3944},[4,26,48,84,102,129],{"title":5,"path":6,"stem":7,"children":8,"icon":10},"Getting Started","\u002Fgetting-started","1.getting-started\u002F1.index",[9,11,16,21],{"title":5,"path":6,"stem":7,"icon":10},"i-lucide-rocket",{"title":12,"path":13,"stem":14,"icon":15},"Installation","\u002Fgetting-started\u002Finstallation","1.getting-started\u002F2.installation","i-lucide-download",{"title":17,"path":18,"stem":19,"icon":20},"Configuration","\u002Fgetting-started\u002Fconfiguration","1.getting-started\u002F3.configuration","i-lucide-settings",{"title":22,"path":23,"stem":24,"icon":25},"First Steps","\u002Fgetting-started\u002Ffirst-steps","1.getting-started\u002F4.first-steps","i-lucide-footprints",{"title":27,"path":28,"stem":29,"children":30,"icon":32},"Connection","\u002Fconnection","2.connection\u002F1.index",[31,33,38,43],{"title":27,"path":28,"stem":29,"icon":32},"i-lucide-server",{"title":34,"path":35,"stem":36,"icon":37},"Basic Connection","\u002Fconnection\u002Fbasic","2.connection\u002F2.basic","i-lucide-plug",{"title":39,"path":40,"stem":41,"icon":42},"Connection Options","\u002Fconnection\u002Foptions","2.connection\u002F3.options","i-lucide-settings-2",{"title":44,"path":45,"stem":46,"icon":47},"Database Operations","\u002Fconnection\u002Fdatabase","2.connection\u002F4.database","i-lucide-database",{"title":49,"path":50,"stem":51,"children":52,"icon":47},"CRUD Operations","\u002Fcrud-operations","3.crud-operations\u002F1.index",[53,54,59,64,69,74,79],{"title":49,"path":50,"stem":51,"icon":47},{"title":55,"path":56,"stem":57,"icon":58},"Insert Operations","\u002Fcrud-operations\u002Finsert","3.crud-operations\u002F2.insert","i-lucide-plus-square",{"title":60,"path":61,"stem":62,"icon":63},"Query Operations","\u002Fcrud-operations\u002Fquery","3.crud-operations\u002F3.query","i-lucide-search",{"title":65,"path":66,"stem":67,"icon":68},"Update Operations","\u002Fcrud-operations\u002Fupdate","3.crud-operations\u002F4.update","i-lucide-edit",{"title":70,"path":71,"stem":72,"icon":73},"Delete Operations","\u002Fcrud-operations\u002Fdelete","3.crud-operations\u002F5.delete","i-lucide-trash",{"title":75,"path":76,"stem":77,"icon":78},"Async Operations","\u002Fcrud-operations\u002Fasync","3.crud-operations\u002F6.async","i-lucide-cpu",{"title":80,"path":81,"stem":82,"icon":83},"Query Operators","\u002Fcrud-operations\u002Foperators","3.crud-operations\u002F7.operators","i-lucide-filter",{"title":85,"path":86,"stem":87,"children":88,"icon":90},"Advanced Features","\u002Fadvanced","4.advanced\u002F1.index",[89,91,96],{"title":85,"path":86,"stem":87,"icon":90},"i-lucide-zap",{"title":92,"path":93,"stem":94,"icon":95},"Aggregation Pipelines","\u002Fadvanced\u002Faggregation","4.advanced\u002F2.aggregation","i-lucide-bar-chart-3",{"title":97,"path":98,"stem":99,"children":100,"icon":63},"Manage Indexes","\u002Fadvanced\u002Findexes","4.advanced\u002F3.indexes",[101],{"title":97,"path":98,"stem":99,"icon":63},{"title":103,"path":104,"stem":105,"children":106,"icon":108},"Examples","\u002Fexamples","5.examples\u002F1.index",[107,109,114,119,124],{"title":103,"path":104,"stem":105,"icon":108},"i-lucide-code",{"title":110,"path":111,"stem":112,"icon":113},"Basic Examples","\u002Fexamples\u002Fbasic","5.examples\u002F2.basic","i-lucide-book-open",{"title":115,"path":116,"stem":117,"icon":118},"Player Systems","\u002Fexamples\u002Fplayer-systems","5.examples\u002F3.player-systems","i-lucide-users",{"title":120,"path":121,"stem":122,"icon":123},"Game Systems","\u002Fexamples\u002Fgame-systems","5.examples\u002F4.game-systems","i-lucide-gamepad-2",{"title":125,"path":126,"stem":127,"icon":128},"Server Administration","\u002Fexamples\u002Fadministration","5.examples\u002F5.administration","i-lucide-shield",{"title":130,"path":131,"stem":132,"children":133,"icon":113},"API Reference","\u002Fapi-reference","6.api-reference\u002F1.index",[134,135,139,143,147],{"title":130,"path":131,"stem":132,"icon":113},{"title":136,"path":137,"stem":138},"MongoDB Global","\u002Fapi-reference\u002Fglobal","6.api-reference\u002F2.global",{"title":140,"path":141,"stem":142},"MongoDBClient","\u002Fapi-reference\u002Fclient","6.api-reference\u002F3.client",{"title":144,"path":145,"stem":146},"MongoDBDatabase","\u002Fapi-reference\u002Fdatabase","6.api-reference\u002F4.database",{"title":148,"path":149,"stem":150},"MongoDBCollection","\u002Fapi-reference\u002Fcollection","6.api-reference\u002F5.collection",{"id":152,"title":92,"body":153,"description":3937,"extension":3938,"links":3939,"meta":3940,"navigation":3941,"path":93,"seo":3942,"stem":94,"__hash__":3943},"docs\u002F4.advanced\u002F2.aggregation.md",{"type":154,"value":155,"toc":3909},"minimark",[156,160,164,169,172,183,187,224,229,239,243,257,261,265,268,393,397,400,706,717,721,833,837,905,909,1001,1005,1008,1170,1174,1177,1297,1301,1304,1449,1453,1702,1706,1712,1850,1854,1858,2458,2462,2765,2769,3150,3154,3538,3542,3720,3724,3752,3887,3891,3905],[157,158,92],"h1",{"id":159},"aggregation-pipelines",[161,162,163],"p",{},"Aggregation pipelines are MongoDB's framework for data aggregation and transformation.",[165,166,168],"h2",{"id":167},"what-is-aggregation","What is Aggregation?",[161,170,171],{},"Aggregation operations process data records and return computed results. Think of it as a data processing pipeline where documents enter, pass through stages, and emerge transformed.",[173,174,179],"pre",{"className":175,"code":177,"language":178},[176],"language-text","Documents → [Stage 1] → [Stage 2] → [Stage 3] → Results\n","text",[180,181,177],"code",{"__ignoreMap":182},"",[165,184,186],{"id":185},"basic-syntax","Basic Syntax",[173,188,192],{"className":189,"code":190,"language":191,"meta":182,"style":182},"language-lua shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","local results = collection:Aggregate(pipeline)\n","lua",[180,193,194],{"__ignoreMap":182},[195,196,199,203,207,210,214,217,221],"span",{"class":197,"line":198},"line",1,[195,200,202],{"class":201},"sMK4o","local",[195,204,206],{"class":205},"sTEyZ"," results ",[195,208,209],{"class":201},"=",[195,211,213],{"class":212},"sBMFI"," collection",[195,215,216],{"class":205},":",[195,218,220],{"class":219},"s2Zo4","Aggregate",[195,222,223],{"class":205},"(pipeline)\n",[225,226,228],"h3",{"id":227},"parameters","Parameters",[230,231,232],"ul",{},[233,234,235,238],"li",{},[180,236,237],{},"pipeline"," (table): Array of aggregation stages",[225,240,242],{"id":241},"returns","Returns",[230,244,245,251],{},[233,246,247,250],{},[180,248,249],{},"table",": Array of result documents",[233,252,253,256],{},[180,254,255],{},"nil",": On failure",[165,258,260],{"id":259},"aggregation-stages","Aggregation Stages",[225,262,264],{"id":263},"match-filter-documents","$match - Filter Documents",[161,266,267],{},"Filter documents early in the pipeline for efficiency:",[173,269,271],{"className":189,"code":270,"language":191,"meta":182,"style":182},"local results = collection:Aggregate({\n    {\n        [\"$match\"] = {\n            level = { [\"$gte\"] = 10 },\n            banned = { [\"$ne\"] = true }\n        }\n    }\n})\n",[180,272,273,290,296,319,348,375,381,387],{"__ignoreMap":182},[195,274,275,277,279,281,283,285,287],{"class":197,"line":198},[195,276,202],{"class":201},[195,278,206],{"class":205},[195,280,209],{"class":201},[195,282,213],{"class":212},[195,284,216],{"class":205},[195,286,220],{"class":219},[195,288,289],{"class":205},"({\n",[195,291,293],{"class":197,"line":292},2,[195,294,295],{"class":205},"    {\n",[195,297,299,302,305,309,311,314,316],{"class":197,"line":298},3,[195,300,301],{"class":205},"        [",[195,303,304],{"class":201},"\"",[195,306,308],{"class":307},"sfazB","$match",[195,310,304],{"class":201},[195,312,313],{"class":205},"] ",[195,315,209],{"class":201},[195,317,318],{"class":205}," {\n",[195,320,322,325,327,330,332,335,337,339,341,345],{"class":197,"line":321},4,[195,323,324],{"class":205},"            level ",[195,326,209],{"class":201},[195,328,329],{"class":205}," { [",[195,331,304],{"class":201},[195,333,334],{"class":307},"$gte",[195,336,304],{"class":201},[195,338,313],{"class":205},[195,340,209],{"class":201},[195,342,344],{"class":343},"sbssI"," 10",[195,346,347],{"class":205}," },\n",[195,349,351,354,356,358,360,363,365,367,369,372],{"class":197,"line":350},5,[195,352,353],{"class":205},"            banned ",[195,355,209],{"class":201},[195,357,329],{"class":205},[195,359,304],{"class":201},[195,361,362],{"class":307},"$ne",[195,364,304],{"class":201},[195,366,313],{"class":205},[195,368,209],{"class":201},[195,370,371],{"class":201}," true",[195,373,374],{"class":205}," }\n",[195,376,378],{"class":197,"line":377},6,[195,379,380],{"class":205},"        }\n",[195,382,384],{"class":197,"line":383},7,[195,385,386],{"class":205},"    }\n",[195,388,390],{"class":197,"line":389},8,[195,391,392],{"class":205},"})\n",[225,394,396],{"id":395},"group-group-documents","$group - Group Documents",[161,398,399],{},"Group documents by a field and perform calculations:",[173,401,403],{"className":189,"code":402,"language":191,"meta":182,"style":182},"-- Group by class\nlocal byClass = collection:Aggregate({\n    {\n        [\"$group\"] = {\n            _id = \"$class\",\n            count = { [\"$sum\"] = 1 },\n            avgLevel = { [\"$avg\"] = \"$level\" },\n            totalCredits = { [\"$sum\"] = \"$credits\" },\n            maxLevel = { [\"$max\"] = \"$level\" },\n            minLevel = { [\"$min\"] = \"$level\" }\n        }\n    }\n})\n\nfor _, group in ipairs(byClass) do\n    print(string.format(\"%s: %d players, avg level %.1f\",\n        group._id, group.count, group.avgLevel))\nend\n",[180,404,405,411,428,432,449,467,492,523,551,580,610,615,620,625,632,654,677,700],{"__ignoreMap":182},[195,406,407],{"class":197,"line":198},[195,408,410],{"class":409},"sHwdD","-- Group by class\n",[195,412,413,415,418,420,422,424,426],{"class":197,"line":292},[195,414,202],{"class":201},[195,416,417],{"class":205}," byClass ",[195,419,209],{"class":201},[195,421,213],{"class":212},[195,423,216],{"class":205},[195,425,220],{"class":219},[195,427,289],{"class":205},[195,429,430],{"class":197,"line":298},[195,431,295],{"class":205},[195,433,434,436,438,441,443,445,447],{"class":197,"line":321},[195,435,301],{"class":205},[195,437,304],{"class":201},[195,439,440],{"class":307},"$group",[195,442,304],{"class":201},[195,444,313],{"class":205},[195,446,209],{"class":201},[195,448,318],{"class":205},[195,450,451,454,456,459,462,464],{"class":197,"line":350},[195,452,453],{"class":205},"            _id ",[195,455,209],{"class":201},[195,457,458],{"class":201}," \"",[195,460,461],{"class":307},"$class",[195,463,304],{"class":201},[195,465,466],{"class":205},",\n",[195,468,469,472,474,476,478,481,483,485,487,490],{"class":197,"line":377},[195,470,471],{"class":205},"            count ",[195,473,209],{"class":201},[195,475,329],{"class":205},[195,477,304],{"class":201},[195,479,480],{"class":307},"$sum",[195,482,304],{"class":201},[195,484,313],{"class":205},[195,486,209],{"class":201},[195,488,489],{"class":343}," 1",[195,491,347],{"class":205},[195,493,494,497,499,501,503,506,508,510,512,514,517,520],{"class":197,"line":383},[195,495,496],{"class":205},"            avgLevel ",[195,498,209],{"class":201},[195,500,329],{"class":205},[195,502,304],{"class":201},[195,504,505],{"class":307},"$avg",[195,507,304],{"class":201},[195,509,313],{"class":205},[195,511,209],{"class":201},[195,513,458],{"class":201},[195,515,516],{"class":307},"$level",[195,518,519],{"class":201},"\" ",[195,521,522],{"class":205},"},\n",[195,524,525,528,530,532,534,536,538,540,542,544,547,549],{"class":197,"line":389},[195,526,527],{"class":205},"            totalCredits ",[195,529,209],{"class":201},[195,531,329],{"class":205},[195,533,304],{"class":201},[195,535,480],{"class":307},[195,537,304],{"class":201},[195,539,313],{"class":205},[195,541,209],{"class":201},[195,543,458],{"class":201},[195,545,546],{"class":307},"$credits",[195,548,519],{"class":201},[195,550,522],{"class":205},[195,552,554,557,559,561,563,566,568,570,572,574,576,578],{"class":197,"line":553},9,[195,555,556],{"class":205},"            maxLevel ",[195,558,209],{"class":201},[195,560,329],{"class":205},[195,562,304],{"class":201},[195,564,565],{"class":307},"$max",[195,567,304],{"class":201},[195,569,313],{"class":205},[195,571,209],{"class":201},[195,573,458],{"class":201},[195,575,516],{"class":307},[195,577,519],{"class":201},[195,579,522],{"class":205},[195,581,583,586,588,590,592,595,597,599,601,603,605,607],{"class":197,"line":582},10,[195,584,585],{"class":205},"            minLevel ",[195,587,209],{"class":201},[195,589,329],{"class":205},[195,591,304],{"class":201},[195,593,594],{"class":307},"$min",[195,596,304],{"class":201},[195,598,313],{"class":205},[195,600,209],{"class":201},[195,602,458],{"class":201},[195,604,516],{"class":307},[195,606,519],{"class":201},[195,608,609],{"class":205},"}\n",[195,611,613],{"class":197,"line":612},11,[195,614,380],{"class":205},[195,616,618],{"class":197,"line":617},12,[195,619,386],{"class":205},[195,621,623],{"class":197,"line":622},13,[195,624,392],{"class":205},[195,626,628],{"class":197,"line":627},14,[195,629,631],{"emptyLinePlaceholder":630},true,"\n",[195,633,635,639,642,645,648,651],{"class":197,"line":634},15,[195,636,638],{"class":637},"s7zQu","for",[195,640,641],{"class":205}," _, group ",[195,643,644],{"class":637},"in",[195,646,647],{"class":219}," ipairs",[195,649,650],{"class":205},"(byClass) ",[195,652,653],{"class":637},"do\n",[195,655,657,660,663,666,668,670,673,675],{"class":197,"line":656},16,[195,658,659],{"class":219},"    print",[195,661,662],{"class":205},"(",[195,664,665],{"class":219},"string.format",[195,667,662],{"class":205},[195,669,304],{"class":201},[195,671,672],{"class":307},"%s: %d players, avg level %.1f",[195,674,304],{"class":201},[195,676,466],{"class":205},[195,678,680,683,686,689,692,694,697],{"class":197,"line":679},17,[195,681,682],{"class":205},"        group.",[195,684,685],{"class":212},"_id",[195,687,688],{"class":205},", group.",[195,690,691],{"class":212},"count",[195,693,688],{"class":205},[195,695,696],{"class":212},"avgLevel",[195,698,699],{"class":205},"))\n",[195,701,703],{"class":197,"line":702},18,[195,704,705],{"class":637},"end\n",[707,708,710],"alert",{"type":709},"info",[161,711,712,713,716],{},"Use ",[180,714,715],{},"_id = nil"," (or omit) to aggregate across all documents without grouping.",[225,718,720],{"id":719},"sort-sort-results","$sort - Sort Results",[173,722,724],{"className":189,"code":723,"language":191,"meta":182,"style":182},"local sorted = collection:Aggregate({\n    { [\"$match\"] = { banned = false } },\n    { [\"$sort\"] = { score = -1, level = -1 } },  -- -1 = descending\n    { [\"$limit\"] = 10 }\n})\n",[180,725,726,743,769,810,829],{"__ignoreMap":182},[195,727,728,730,733,735,737,739,741],{"class":197,"line":198},[195,729,202],{"class":201},[195,731,732],{"class":205}," sorted ",[195,734,209],{"class":201},[195,736,213],{"class":212},[195,738,216],{"class":205},[195,740,220],{"class":219},[195,742,289],{"class":205},[195,744,745,748,750,752,754,756,758,761,763,766],{"class":197,"line":292},[195,746,747],{"class":205},"    { [",[195,749,304],{"class":201},[195,751,308],{"class":307},[195,753,304],{"class":201},[195,755,313],{"class":205},[195,757,209],{"class":201},[195,759,760],{"class":205}," { banned ",[195,762,209],{"class":201},[195,764,765],{"class":201}," false",[195,767,768],{"class":205}," } },\n",[195,770,771,773,775,778,780,782,784,787,789,792,795,798,800,802,804,807],{"class":197,"line":298},[195,772,747],{"class":205},[195,774,304],{"class":201},[195,776,777],{"class":307},"$sort",[195,779,304],{"class":201},[195,781,313],{"class":205},[195,783,209],{"class":201},[195,785,786],{"class":205}," { score ",[195,788,209],{"class":201},[195,790,791],{"class":201}," -",[195,793,794],{"class":343},"1",[195,796,797],{"class":205},", level ",[195,799,209],{"class":201},[195,801,791],{"class":201},[195,803,794],{"class":343},[195,805,806],{"class":205}," } },  ",[195,808,809],{"class":409},"-- -1 = descending\n",[195,811,812,814,816,819,821,823,825,827],{"class":197,"line":321},[195,813,747],{"class":205},[195,815,304],{"class":201},[195,817,818],{"class":307},"$limit",[195,820,304],{"class":201},[195,822,313],{"class":205},[195,824,209],{"class":201},[195,826,344],{"class":343},[195,828,374],{"class":205},[195,830,831],{"class":197,"line":350},[195,832,392],{"class":205},[225,834,836],{"id":835},"limit-limit-results","$limit - Limit Results",[173,838,840],{"className":189,"code":839,"language":191,"meta":182,"style":182},"local top10 = collection:Aggregate({\n    { [\"$sort\"] = { score = -1 } },\n    { [\"$limit\"] = 10 }\n})\n",[180,841,842,859,883,901],{"__ignoreMap":182},[195,843,844,846,849,851,853,855,857],{"class":197,"line":198},[195,845,202],{"class":201},[195,847,848],{"class":205}," top10 ",[195,850,209],{"class":201},[195,852,213],{"class":212},[195,854,216],{"class":205},[195,856,220],{"class":219},[195,858,289],{"class":205},[195,860,861,863,865,867,869,871,873,875,877,879,881],{"class":197,"line":292},[195,862,747],{"class":205},[195,864,304],{"class":201},[195,866,777],{"class":307},[195,868,304],{"class":201},[195,870,313],{"class":205},[195,872,209],{"class":201},[195,874,786],{"class":205},[195,876,209],{"class":201},[195,878,791],{"class":201},[195,880,794],{"class":343},[195,882,768],{"class":205},[195,884,885,887,889,891,893,895,897,899],{"class":197,"line":298},[195,886,747],{"class":205},[195,888,304],{"class":201},[195,890,818],{"class":307},[195,892,304],{"class":201},[195,894,313],{"class":205},[195,896,209],{"class":201},[195,898,344],{"class":343},[195,900,374],{"class":205},[195,902,903],{"class":197,"line":321},[195,904,392],{"class":205},[225,906,908],{"id":907},"skip-skip-results","$skip - Skip Results",[173,910,912],{"className":189,"code":911,"language":191,"meta":182,"style":182},"-- Pagination: page 2 with 10 per page\nlocal page2 = collection:Aggregate({\n    { [\"$sort\"] = { score = -1 } },\n    { [\"$skip\"] = 10 },\n    { [\"$limit\"] = 10 }\n})\n",[180,913,914,919,936,960,979,997],{"__ignoreMap":182},[195,915,916],{"class":197,"line":198},[195,917,918],{"class":409},"-- Pagination: page 2 with 10 per page\n",[195,920,921,923,926,928,930,932,934],{"class":197,"line":292},[195,922,202],{"class":201},[195,924,925],{"class":205}," page2 ",[195,927,209],{"class":201},[195,929,213],{"class":212},[195,931,216],{"class":205},[195,933,220],{"class":219},[195,935,289],{"class":205},[195,937,938,940,942,944,946,948,950,952,954,956,958],{"class":197,"line":298},[195,939,747],{"class":205},[195,941,304],{"class":201},[195,943,777],{"class":307},[195,945,304],{"class":201},[195,947,313],{"class":205},[195,949,209],{"class":201},[195,951,786],{"class":205},[195,953,209],{"class":201},[195,955,791],{"class":201},[195,957,794],{"class":343},[195,959,768],{"class":205},[195,961,962,964,966,969,971,973,975,977],{"class":197,"line":321},[195,963,747],{"class":205},[195,965,304],{"class":201},[195,967,968],{"class":307},"$skip",[195,970,304],{"class":201},[195,972,313],{"class":205},[195,974,209],{"class":201},[195,976,344],{"class":343},[195,978,347],{"class":205},[195,980,981,983,985,987,989,991,993,995],{"class":197,"line":350},[195,982,747],{"class":205},[195,984,304],{"class":201},[195,986,818],{"class":307},[195,988,304],{"class":201},[195,990,313],{"class":205},[195,992,209],{"class":201},[195,994,344],{"class":343},[195,996,374],{"class":205},[195,998,999],{"class":197,"line":377},[195,1000,392],{"class":205},[225,1002,1004],{"id":1003},"project-reshape-documents","$project - Reshape Documents",[161,1006,1007],{},"Control which fields appear in output:",[173,1009,1011],{"className":189,"code":1010,"language":191,"meta":182,"style":182},"local projected = collection:Aggregate({\n    {\n        [\"$project\"] = {\n            username = 1,        -- Include\n            level = 1,\n            score = 1,\n            _id = 0,            -- Exclude\n            -- Computed field\n            scorePerLevel = {\n                [\"$divide\"] = { \"$score\", \"$level\" }\n            }\n        }\n    }\n})\n",[180,1012,1013,1030,1034,1051,1066,1076,1087,1102,1107,1116,1153,1158,1162,1166],{"__ignoreMap":182},[195,1014,1015,1017,1020,1022,1024,1026,1028],{"class":197,"line":198},[195,1016,202],{"class":201},[195,1018,1019],{"class":205}," projected ",[195,1021,209],{"class":201},[195,1023,213],{"class":212},[195,1025,216],{"class":205},[195,1027,220],{"class":219},[195,1029,289],{"class":205},[195,1031,1032],{"class":197,"line":292},[195,1033,295],{"class":205},[195,1035,1036,1038,1040,1043,1045,1047,1049],{"class":197,"line":298},[195,1037,301],{"class":205},[195,1039,304],{"class":201},[195,1041,1042],{"class":307},"$project",[195,1044,304],{"class":201},[195,1046,313],{"class":205},[195,1048,209],{"class":201},[195,1050,318],{"class":205},[195,1052,1053,1056,1058,1060,1063],{"class":197,"line":321},[195,1054,1055],{"class":205},"            username ",[195,1057,209],{"class":201},[195,1059,489],{"class":343},[195,1061,1062],{"class":205},",        ",[195,1064,1065],{"class":409},"-- Include\n",[195,1067,1068,1070,1072,1074],{"class":197,"line":350},[195,1069,324],{"class":205},[195,1071,209],{"class":201},[195,1073,489],{"class":343},[195,1075,466],{"class":205},[195,1077,1078,1081,1083,1085],{"class":197,"line":377},[195,1079,1080],{"class":205},"            score ",[195,1082,209],{"class":201},[195,1084,489],{"class":343},[195,1086,466],{"class":205},[195,1088,1089,1091,1093,1096,1099],{"class":197,"line":383},[195,1090,453],{"class":205},[195,1092,209],{"class":201},[195,1094,1095],{"class":343}," 0",[195,1097,1098],{"class":205},",            ",[195,1100,1101],{"class":409},"-- Exclude\n",[195,1103,1104],{"class":197,"line":389},[195,1105,1106],{"class":409},"            -- Computed field\n",[195,1108,1109,1112,1114],{"class":197,"line":553},[195,1110,1111],{"class":205},"            scorePerLevel ",[195,1113,209],{"class":201},[195,1115,318],{"class":205},[195,1117,1118,1121,1123,1126,1128,1130,1132,1135,1137,1140,1142,1145,1147,1149,1151],{"class":197,"line":582},[195,1119,1120],{"class":205},"                [",[195,1122,304],{"class":201},[195,1124,1125],{"class":307},"$divide",[195,1127,304],{"class":201},[195,1129,313],{"class":205},[195,1131,209],{"class":201},[195,1133,1134],{"class":205}," { ",[195,1136,304],{"class":201},[195,1138,1139],{"class":307},"$score",[195,1141,304],{"class":201},[195,1143,1144],{"class":205},", ",[195,1146,304],{"class":201},[195,1148,516],{"class":307},[195,1150,519],{"class":201},[195,1152,609],{"class":205},[195,1154,1155],{"class":197,"line":612},[195,1156,1157],{"class":205},"            }\n",[195,1159,1160],{"class":197,"line":617},[195,1161,380],{"class":205},[195,1163,1164],{"class":197,"line":622},[195,1165,386],{"class":205},[195,1167,1168],{"class":197,"line":627},[195,1169,392],{"class":205},[225,1171,1173],{"id":1172},"unwind-deconstruct-arrays","$unwind - Deconstruct Arrays",[161,1175,1176],{},"Flatten array fields:",[173,1178,1180],{"className":189,"code":1179,"language":191,"meta":182,"style":182},"-- If players have inventory arrays\nlocal items = collection:Aggregate({\n    { [\"$unwind\"] = \"$inventory\" },\n    {\n        [\"$group\"] = {\n            _id = \"$inventory.type\",\n            count = { [\"$sum\"] = 1 }\n        }\n    }\n})\n",[180,1181,1182,1187,1204,1228,1232,1248,1263,1285,1289,1293],{"__ignoreMap":182},[195,1183,1184],{"class":197,"line":198},[195,1185,1186],{"class":409},"-- If players have inventory arrays\n",[195,1188,1189,1191,1194,1196,1198,1200,1202],{"class":197,"line":292},[195,1190,202],{"class":201},[195,1192,1193],{"class":205}," items ",[195,1195,209],{"class":201},[195,1197,213],{"class":212},[195,1199,216],{"class":205},[195,1201,220],{"class":219},[195,1203,289],{"class":205},[195,1205,1206,1208,1210,1213,1215,1217,1219,1221,1224,1226],{"class":197,"line":298},[195,1207,747],{"class":205},[195,1209,304],{"class":201},[195,1211,1212],{"class":307},"$unwind",[195,1214,304],{"class":201},[195,1216,313],{"class":205},[195,1218,209],{"class":201},[195,1220,458],{"class":201},[195,1222,1223],{"class":307},"$inventory",[195,1225,519],{"class":201},[195,1227,522],{"class":205},[195,1229,1230],{"class":197,"line":321},[195,1231,295],{"class":205},[195,1233,1234,1236,1238,1240,1242,1244,1246],{"class":197,"line":350},[195,1235,301],{"class":205},[195,1237,304],{"class":201},[195,1239,440],{"class":307},[195,1241,304],{"class":201},[195,1243,313],{"class":205},[195,1245,209],{"class":201},[195,1247,318],{"class":205},[195,1249,1250,1252,1254,1256,1259,1261],{"class":197,"line":377},[195,1251,453],{"class":205},[195,1253,209],{"class":201},[195,1255,458],{"class":201},[195,1257,1258],{"class":307},"$inventory.type",[195,1260,304],{"class":201},[195,1262,466],{"class":205},[195,1264,1265,1267,1269,1271,1273,1275,1277,1279,1281,1283],{"class":197,"line":383},[195,1266,471],{"class":205},[195,1268,209],{"class":201},[195,1270,329],{"class":205},[195,1272,304],{"class":201},[195,1274,480],{"class":307},[195,1276,304],{"class":201},[195,1278,313],{"class":205},[195,1280,209],{"class":201},[195,1282,489],{"class":343},[195,1284,374],{"class":205},[195,1286,1287],{"class":197,"line":389},[195,1288,380],{"class":205},[195,1290,1291],{"class":197,"line":553},[195,1292,386],{"class":205},[195,1294,1295],{"class":197,"line":582},[195,1296,392],{"class":205},[225,1298,1300],{"id":1299},"lookup-join-collections","$lookup - Join Collections",[161,1302,1303],{},"Join data from another collection:",[173,1305,1307],{"className":189,"code":1306,"language":191,"meta":182,"style":182},"local withGuild = collection:Aggregate({\n    {\n        [\"$lookup\"] = {\n            from = \"guilds\",\n            localField = \"guild_id\",\n            foreignField = \"_id\",\n            as = \"guild\"\n        }\n    },\n    { [\"$unwind\"] = \"$guild\" }  -- Flatten the array\n})\n",[180,1308,1309,1326,1330,1347,1363,1379,1394,1409,1413,1418,1445],{"__ignoreMap":182},[195,1310,1311,1313,1316,1318,1320,1322,1324],{"class":197,"line":198},[195,1312,202],{"class":201},[195,1314,1315],{"class":205}," withGuild ",[195,1317,209],{"class":201},[195,1319,213],{"class":212},[195,1321,216],{"class":205},[195,1323,220],{"class":219},[195,1325,289],{"class":205},[195,1327,1328],{"class":197,"line":292},[195,1329,295],{"class":205},[195,1331,1332,1334,1336,1339,1341,1343,1345],{"class":197,"line":298},[195,1333,301],{"class":205},[195,1335,304],{"class":201},[195,1337,1338],{"class":307},"$lookup",[195,1340,304],{"class":201},[195,1342,313],{"class":205},[195,1344,209],{"class":201},[195,1346,318],{"class":205},[195,1348,1349,1352,1354,1356,1359,1361],{"class":197,"line":321},[195,1350,1351],{"class":205},"            from ",[195,1353,209],{"class":201},[195,1355,458],{"class":201},[195,1357,1358],{"class":307},"guilds",[195,1360,304],{"class":201},[195,1362,466],{"class":205},[195,1364,1365,1368,1370,1372,1375,1377],{"class":197,"line":350},[195,1366,1367],{"class":205},"            localField ",[195,1369,209],{"class":201},[195,1371,458],{"class":201},[195,1373,1374],{"class":307},"guild_id",[195,1376,304],{"class":201},[195,1378,466],{"class":205},[195,1380,1381,1384,1386,1388,1390,1392],{"class":197,"line":377},[195,1382,1383],{"class":205},"            foreignField ",[195,1385,209],{"class":201},[195,1387,458],{"class":201},[195,1389,685],{"class":307},[195,1391,304],{"class":201},[195,1393,466],{"class":205},[195,1395,1396,1399,1401,1403,1406],{"class":197,"line":383},[195,1397,1398],{"class":205},"            as ",[195,1400,209],{"class":201},[195,1402,458],{"class":201},[195,1404,1405],{"class":307},"guild",[195,1407,1408],{"class":201},"\"\n",[195,1410,1411],{"class":197,"line":389},[195,1412,380],{"class":205},[195,1414,1415],{"class":197,"line":553},[195,1416,1417],{"class":205},"    },\n",[195,1419,1420,1422,1424,1426,1428,1430,1432,1434,1437,1439,1442],{"class":197,"line":582},[195,1421,747],{"class":205},[195,1423,304],{"class":201},[195,1425,1212],{"class":307},[195,1427,304],{"class":201},[195,1429,313],{"class":205},[195,1431,209],{"class":201},[195,1433,458],{"class":201},[195,1435,1436],{"class":307},"$guild",[195,1438,519],{"class":201},[195,1440,1441],{"class":205},"}  ",[195,1443,1444],{"class":409},"-- Flatten the array\n",[195,1446,1447],{"class":197,"line":612},[195,1448,392],{"class":205},[225,1450,1452],{"id":1451},"bucket-group-into-ranges","$bucket - Group into Ranges",[173,1454,1456],{"className":189,"code":1455,"language":191,"meta":182,"style":182},"local levelDist = collection:Aggregate({\n    {\n        [\"$bucket\"] = {\n            groupBy = \"$level\",\n            boundaries = { 0, 10, 20, 30, 40, 50 },\n            default = \"50+\",\n            output = {\n                count = { [\"$sum\"] = 1 },\n                avgCredits = { [\"$avg\"] = \"$credits\" }\n            }\n        }\n    }\n})\n\nfor _, bucket in ipairs(levelDist) do\n    print(string.format(\"Level %s: %d players\", \n        tostring(bucket._id), bucket.count))\nend\n",[180,1457,1458,1475,1479,1496,1511,1550,1566,1575,1598,1625,1629,1633,1637,1641,1645,1661,1681,1698],{"__ignoreMap":182},[195,1459,1460,1462,1465,1467,1469,1471,1473],{"class":197,"line":198},[195,1461,202],{"class":201},[195,1463,1464],{"class":205}," levelDist ",[195,1466,209],{"class":201},[195,1468,213],{"class":212},[195,1470,216],{"class":205},[195,1472,220],{"class":219},[195,1474,289],{"class":205},[195,1476,1477],{"class":197,"line":292},[195,1478,295],{"class":205},[195,1480,1481,1483,1485,1488,1490,1492,1494],{"class":197,"line":298},[195,1482,301],{"class":205},[195,1484,304],{"class":201},[195,1486,1487],{"class":307},"$bucket",[195,1489,304],{"class":201},[195,1491,313],{"class":205},[195,1493,209],{"class":201},[195,1495,318],{"class":205},[195,1497,1498,1501,1503,1505,1507,1509],{"class":197,"line":321},[195,1499,1500],{"class":205},"            groupBy ",[195,1502,209],{"class":201},[195,1504,458],{"class":201},[195,1506,516],{"class":307},[195,1508,304],{"class":201},[195,1510,466],{"class":205},[195,1512,1513,1516,1518,1520,1523,1525,1528,1530,1533,1535,1538,1540,1543,1545,1548],{"class":197,"line":350},[195,1514,1515],{"class":205},"            boundaries ",[195,1517,209],{"class":201},[195,1519,1134],{"class":205},[195,1521,1522],{"class":343},"0",[195,1524,1144],{"class":205},[195,1526,1527],{"class":343},"10",[195,1529,1144],{"class":205},[195,1531,1532],{"class":343},"20",[195,1534,1144],{"class":205},[195,1536,1537],{"class":343},"30",[195,1539,1144],{"class":205},[195,1541,1542],{"class":343},"40",[195,1544,1144],{"class":205},[195,1546,1547],{"class":343},"50",[195,1549,347],{"class":205},[195,1551,1552,1555,1557,1559,1562,1564],{"class":197,"line":377},[195,1553,1554],{"class":205},"            default ",[195,1556,209],{"class":201},[195,1558,458],{"class":201},[195,1560,1561],{"class":307},"50+",[195,1563,304],{"class":201},[195,1565,466],{"class":205},[195,1567,1568,1571,1573],{"class":197,"line":383},[195,1569,1570],{"class":205},"            output ",[195,1572,209],{"class":201},[195,1574,318],{"class":205},[195,1576,1577,1580,1582,1584,1586,1588,1590,1592,1594,1596],{"class":197,"line":389},[195,1578,1579],{"class":205},"                count ",[195,1581,209],{"class":201},[195,1583,329],{"class":205},[195,1585,304],{"class":201},[195,1587,480],{"class":307},[195,1589,304],{"class":201},[195,1591,313],{"class":205},[195,1593,209],{"class":201},[195,1595,489],{"class":343},[195,1597,347],{"class":205},[195,1599,1600,1603,1605,1607,1609,1611,1613,1615,1617,1619,1621,1623],{"class":197,"line":553},[195,1601,1602],{"class":205},"                avgCredits ",[195,1604,209],{"class":201},[195,1606,329],{"class":205},[195,1608,304],{"class":201},[195,1610,505],{"class":307},[195,1612,304],{"class":201},[195,1614,313],{"class":205},[195,1616,209],{"class":201},[195,1618,458],{"class":201},[195,1620,546],{"class":307},[195,1622,519],{"class":201},[195,1624,609],{"class":205},[195,1626,1627],{"class":197,"line":582},[195,1628,1157],{"class":205},[195,1630,1631],{"class":197,"line":612},[195,1632,380],{"class":205},[195,1634,1635],{"class":197,"line":617},[195,1636,386],{"class":205},[195,1638,1639],{"class":197,"line":622},[195,1640,392],{"class":205},[195,1642,1643],{"class":197,"line":627},[195,1644,631],{"emptyLinePlaceholder":630},[195,1646,1647,1649,1652,1654,1656,1659],{"class":197,"line":634},[195,1648,638],{"class":637},[195,1650,1651],{"class":205}," _, bucket ",[195,1653,644],{"class":637},[195,1655,647],{"class":219},[195,1657,1658],{"class":205},"(levelDist) ",[195,1660,653],{"class":637},[195,1662,1663,1665,1667,1669,1671,1673,1676,1678],{"class":197,"line":656},[195,1664,659],{"class":219},[195,1666,662],{"class":205},[195,1668,665],{"class":219},[195,1670,662],{"class":205},[195,1672,304],{"class":201},[195,1674,1675],{"class":307},"Level %s: %d players",[195,1677,304],{"class":201},[195,1679,1680],{"class":205},", \n",[195,1682,1683,1686,1689,1691,1694,1696],{"class":197,"line":679},[195,1684,1685],{"class":219},"        tostring",[195,1687,1688],{"class":205},"(bucket.",[195,1690,685],{"class":212},[195,1692,1693],{"class":205},"), bucket.",[195,1695,691],{"class":212},[195,1697,699],{"class":205},[195,1699,1700],{"class":197,"line":702},[195,1701,705],{"class":637},[165,1703,1705],{"id":1704},"accumulator-operators","Accumulator Operators",[161,1707,1708,1709,1711],{},"Use these in ",[180,1710,440],{}," stages:",[249,1713,1714,1730],{},[1715,1716,1717],"thead",{},[1718,1719,1720,1724,1727],"tr",{},[1721,1722,1723],"th",{},"Operator",[1721,1725,1726],{},"Description",[1721,1728,1729],{},"Example",[1731,1732,1733,1748,1762,1776,1790,1805,1820,1835],"tbody",{},[1718,1734,1735,1740,1743],{},[1736,1737,1738],"td",{},[180,1739,480],{},[1736,1741,1742],{},"Sum values",[1736,1744,1745],{},[180,1746,1747],{},"{ [\"$sum\"] = \"$credits\" }",[1718,1749,1750,1754,1757],{},[1736,1751,1752],{},[180,1753,505],{},[1736,1755,1756],{},"Average",[1736,1758,1759],{},[180,1760,1761],{},"{ [\"$avg\"] = \"$level\" }",[1718,1763,1764,1768,1771],{},[1736,1765,1766],{},[180,1767,594],{},[1736,1769,1770],{},"Minimum",[1736,1772,1773],{},[180,1774,1775],{},"{ [\"$min\"] = \"$score\" }",[1718,1777,1778,1782,1785],{},[1736,1779,1780],{},[180,1781,565],{},[1736,1783,1784],{},"Maximum",[1736,1786,1787],{},[180,1788,1789],{},"{ [\"$max\"] = \"$score\" }",[1718,1791,1792,1797,1800],{},[1736,1793,1794],{},[180,1795,1796],{},"$first",[1736,1798,1799],{},"First value",[1736,1801,1802],{},[180,1803,1804],{},"{ [\"$first\"] = \"$name\" }",[1718,1806,1807,1812,1815],{},[1736,1808,1809],{},[180,1810,1811],{},"$last",[1736,1813,1814],{},"Last value",[1736,1816,1817],{},[180,1818,1819],{},"{ [\"$last\"] = \"$name\" }",[1718,1821,1822,1827,1830],{},[1736,1823,1824],{},[180,1825,1826],{},"$push",[1736,1828,1829],{},"Array of values",[1736,1831,1832],{},[180,1833,1834],{},"{ [\"$push\"] = \"$name\" }",[1718,1836,1837,1842,1845],{},[1736,1838,1839],{},[180,1840,1841],{},"$addToSet",[1736,1843,1844],{},"Unique array",[1736,1846,1847],{},[180,1848,1849],{},"{ [\"$addToSet\"] = \"$class\" }",[165,1851,1853],{"id":1852},"complete-examples","Complete Examples",[225,1855,1857],{"id":1856},"player-statistics-dashboard","Player Statistics Dashboard",[173,1859,1861],{"className":189,"code":1860,"language":191,"meta":182,"style":182},"function GetServerStats()\n    local players = db:Collection(\"players\")\n\n    local stats = players:Aggregate({\n        -- Filter active players\n        {\n            [\"$match\"] = {\n                banned = { [\"$ne\"] = true }\n            }\n        },\n        -- Calculate statistics\n        {\n            [\"$group\"] = {\n                _id = nil,\n                totalPlayers = { [\"$sum\"] = 1 },\n                avgLevel = { [\"$avg\"] = \"$level\" },\n                avgCredits = { [\"$avg\"] = \"$credits\" },\n                totalCredits = { [\"$sum\"] = \"$credits\" },\n                maxLevel = { [\"$max\"] = \"$level\" },\n                activeToday = {\n                    [\"$sum\"] = {\n                        [\"$cond\"] = {\n                            [\"if\"] = {\n                                [\"$gte\"] = { \"$last_login\", os.time() - 86400 }\n                            },\n                            [\"then\"] = 1,\n                            [\"else\"] = 0\n                        }\n                    }\n                }\n            }\n        }\n    })\n\n    return stats[1]\nend\n\nlocal stats = GetServerStats()\nprint(\"Total Players:\", stats.totalPlayers)\nprint(\"Average Level:\", string.format(\"%.1f\", stats.avgLevel))\nprint(\"Active Today:\", stats.activeToday)\n",[180,1862,1863,1874,1904,1908,1926,1931,1936,1953,1976,1980,1985,1990,1994,2010,2022,2045,2072,2098,2125,2153,2163,2181,2200,2219,2260,2266,2286,2305,2311,2317,2323,2328,2333,2339,2344,2358,2363,2368,2381,2404,2437],{"__ignoreMap":182},[195,1864,1865,1868,1871],{"class":197,"line":198},[195,1866,1867],{"class":637},"function",[195,1869,1870],{"class":219}," GetServerStats",[195,1872,1873],{"class":201},"()\n",[195,1875,1876,1879,1882,1884,1887,1889,1892,1894,1896,1899,1901],{"class":197,"line":292},[195,1877,1878],{"class":201},"    local",[195,1880,1881],{"class":205}," players ",[195,1883,209],{"class":201},[195,1885,1886],{"class":212}," db",[195,1888,216],{"class":205},[195,1890,1891],{"class":219},"Collection",[195,1893,662],{"class":205},[195,1895,304],{"class":201},[195,1897,1898],{"class":307},"players",[195,1900,304],{"class":201},[195,1902,1903],{"class":205},")\n",[195,1905,1906],{"class":197,"line":298},[195,1907,631],{"emptyLinePlaceholder":630},[195,1909,1910,1912,1915,1917,1920,1922,1924],{"class":197,"line":321},[195,1911,1878],{"class":201},[195,1913,1914],{"class":205}," stats ",[195,1916,209],{"class":201},[195,1918,1919],{"class":212}," players",[195,1921,216],{"class":205},[195,1923,220],{"class":219},[195,1925,289],{"class":205},[195,1927,1928],{"class":197,"line":350},[195,1929,1930],{"class":409},"        -- Filter active players\n",[195,1932,1933],{"class":197,"line":377},[195,1934,1935],{"class":205},"        {\n",[195,1937,1938,1941,1943,1945,1947,1949,1951],{"class":197,"line":383},[195,1939,1940],{"class":205},"            [",[195,1942,304],{"class":201},[195,1944,308],{"class":307},[195,1946,304],{"class":201},[195,1948,313],{"class":205},[195,1950,209],{"class":201},[195,1952,318],{"class":205},[195,1954,1955,1958,1960,1962,1964,1966,1968,1970,1972,1974],{"class":197,"line":389},[195,1956,1957],{"class":205},"                banned ",[195,1959,209],{"class":201},[195,1961,329],{"class":205},[195,1963,304],{"class":201},[195,1965,362],{"class":307},[195,1967,304],{"class":201},[195,1969,313],{"class":205},[195,1971,209],{"class":201},[195,1973,371],{"class":201},[195,1975,374],{"class":205},[195,1977,1978],{"class":197,"line":553},[195,1979,1157],{"class":205},[195,1981,1982],{"class":197,"line":582},[195,1983,1984],{"class":205},"        },\n",[195,1986,1987],{"class":197,"line":612},[195,1988,1989],{"class":409},"        -- Calculate statistics\n",[195,1991,1992],{"class":197,"line":617},[195,1993,1935],{"class":205},[195,1995,1996,1998,2000,2002,2004,2006,2008],{"class":197,"line":622},[195,1997,1940],{"class":205},[195,1999,304],{"class":201},[195,2001,440],{"class":307},[195,2003,304],{"class":201},[195,2005,313],{"class":205},[195,2007,209],{"class":201},[195,2009,318],{"class":205},[195,2011,2012,2015,2017,2020],{"class":197,"line":627},[195,2013,2014],{"class":205},"                _id ",[195,2016,209],{"class":201},[195,2018,2019],{"class":201}," nil",[195,2021,466],{"class":205},[195,2023,2024,2027,2029,2031,2033,2035,2037,2039,2041,2043],{"class":197,"line":634},[195,2025,2026],{"class":205},"                totalPlayers ",[195,2028,209],{"class":201},[195,2030,329],{"class":205},[195,2032,304],{"class":201},[195,2034,480],{"class":307},[195,2036,304],{"class":201},[195,2038,313],{"class":205},[195,2040,209],{"class":201},[195,2042,489],{"class":343},[195,2044,347],{"class":205},[195,2046,2047,2050,2052,2054,2056,2058,2060,2062,2064,2066,2068,2070],{"class":197,"line":656},[195,2048,2049],{"class":205},"                avgLevel ",[195,2051,209],{"class":201},[195,2053,329],{"class":205},[195,2055,304],{"class":201},[195,2057,505],{"class":307},[195,2059,304],{"class":201},[195,2061,313],{"class":205},[195,2063,209],{"class":201},[195,2065,458],{"class":201},[195,2067,516],{"class":307},[195,2069,519],{"class":201},[195,2071,522],{"class":205},[195,2073,2074,2076,2078,2080,2082,2084,2086,2088,2090,2092,2094,2096],{"class":197,"line":679},[195,2075,1602],{"class":205},[195,2077,209],{"class":201},[195,2079,329],{"class":205},[195,2081,304],{"class":201},[195,2083,505],{"class":307},[195,2085,304],{"class":201},[195,2087,313],{"class":205},[195,2089,209],{"class":201},[195,2091,458],{"class":201},[195,2093,546],{"class":307},[195,2095,519],{"class":201},[195,2097,522],{"class":205},[195,2099,2100,2103,2105,2107,2109,2111,2113,2115,2117,2119,2121,2123],{"class":197,"line":702},[195,2101,2102],{"class":205},"                totalCredits ",[195,2104,209],{"class":201},[195,2106,329],{"class":205},[195,2108,304],{"class":201},[195,2110,480],{"class":307},[195,2112,304],{"class":201},[195,2114,313],{"class":205},[195,2116,209],{"class":201},[195,2118,458],{"class":201},[195,2120,546],{"class":307},[195,2122,519],{"class":201},[195,2124,522],{"class":205},[195,2126,2128,2131,2133,2135,2137,2139,2141,2143,2145,2147,2149,2151],{"class":197,"line":2127},19,[195,2129,2130],{"class":205},"                maxLevel ",[195,2132,209],{"class":201},[195,2134,329],{"class":205},[195,2136,304],{"class":201},[195,2138,565],{"class":307},[195,2140,304],{"class":201},[195,2142,313],{"class":205},[195,2144,209],{"class":201},[195,2146,458],{"class":201},[195,2148,516],{"class":307},[195,2150,519],{"class":201},[195,2152,522],{"class":205},[195,2154,2156,2159,2161],{"class":197,"line":2155},20,[195,2157,2158],{"class":205},"                activeToday ",[195,2160,209],{"class":201},[195,2162,318],{"class":205},[195,2164,2166,2169,2171,2173,2175,2177,2179],{"class":197,"line":2165},21,[195,2167,2168],{"class":205},"                    [",[195,2170,304],{"class":201},[195,2172,480],{"class":307},[195,2174,304],{"class":201},[195,2176,313],{"class":205},[195,2178,209],{"class":201},[195,2180,318],{"class":205},[195,2182,2184,2187,2189,2192,2194,2196,2198],{"class":197,"line":2183},22,[195,2185,2186],{"class":205},"                        [",[195,2188,304],{"class":201},[195,2190,2191],{"class":307},"$cond",[195,2193,304],{"class":201},[195,2195,313],{"class":205},[195,2197,209],{"class":201},[195,2199,318],{"class":205},[195,2201,2203,2206,2208,2211,2213,2215,2217],{"class":197,"line":2202},23,[195,2204,2205],{"class":205},"                            [",[195,2207,304],{"class":201},[195,2209,2210],{"class":307},"if",[195,2212,304],{"class":201},[195,2214,313],{"class":205},[195,2216,209],{"class":201},[195,2218,318],{"class":205},[195,2220,2222,2225,2227,2229,2231,2233,2235,2237,2239,2242,2244,2246,2249,2252,2255,2258],{"class":197,"line":2221},24,[195,2223,2224],{"class":205},"                                [",[195,2226,304],{"class":201},[195,2228,334],{"class":307},[195,2230,304],{"class":201},[195,2232,313],{"class":205},[195,2234,209],{"class":201},[195,2236,1134],{"class":205},[195,2238,304],{"class":201},[195,2240,2241],{"class":307},"$last_login",[195,2243,304],{"class":201},[195,2245,1144],{"class":205},[195,2247,2248],{"class":219},"os.time",[195,2250,2251],{"class":205},"() ",[195,2253,2254],{"class":201},"-",[195,2256,2257],{"class":343}," 86400",[195,2259,374],{"class":205},[195,2261,2263],{"class":197,"line":2262},25,[195,2264,2265],{"class":205},"                            },\n",[195,2267,2269,2271,2273,2276,2278,2280,2282,2284],{"class":197,"line":2268},26,[195,2270,2205],{"class":205},[195,2272,304],{"class":201},[195,2274,2275],{"class":307},"then",[195,2277,304],{"class":201},[195,2279,313],{"class":205},[195,2281,209],{"class":201},[195,2283,489],{"class":343},[195,2285,466],{"class":205},[195,2287,2289,2291,2293,2296,2298,2300,2302],{"class":197,"line":2288},27,[195,2290,2205],{"class":205},[195,2292,304],{"class":201},[195,2294,2295],{"class":307},"else",[195,2297,304],{"class":201},[195,2299,313],{"class":205},[195,2301,209],{"class":201},[195,2303,2304],{"class":343}," 0\n",[195,2306,2308],{"class":197,"line":2307},28,[195,2309,2310],{"class":205},"                        }\n",[195,2312,2314],{"class":197,"line":2313},29,[195,2315,2316],{"class":205},"                    }\n",[195,2318,2320],{"class":197,"line":2319},30,[195,2321,2322],{"class":205},"                }\n",[195,2324,2326],{"class":197,"line":2325},31,[195,2327,1157],{"class":205},[195,2329,2331],{"class":197,"line":2330},32,[195,2332,380],{"class":205},[195,2334,2336],{"class":197,"line":2335},33,[195,2337,2338],{"class":205},"    })\n",[195,2340,2342],{"class":197,"line":2341},34,[195,2343,631],{"emptyLinePlaceholder":630},[195,2345,2347,2350,2353,2355],{"class":197,"line":2346},35,[195,2348,2349],{"class":637},"    return",[195,2351,2352],{"class":205}," stats[",[195,2354,794],{"class":343},[195,2356,2357],{"class":205},"]\n",[195,2359,2361],{"class":197,"line":2360},36,[195,2362,705],{"class":637},[195,2364,2366],{"class":197,"line":2365},37,[195,2367,631],{"emptyLinePlaceholder":630},[195,2369,2371,2373,2375,2377,2379],{"class":197,"line":2370},38,[195,2372,202],{"class":201},[195,2374,1914],{"class":205},[195,2376,209],{"class":201},[195,2378,1870],{"class":219},[195,2380,1873],{"class":205},[195,2382,2384,2387,2389,2391,2394,2396,2399,2402],{"class":197,"line":2383},39,[195,2385,2386],{"class":219},"print",[195,2388,662],{"class":205},[195,2390,304],{"class":201},[195,2392,2393],{"class":307},"Total Players:",[195,2395,304],{"class":201},[195,2397,2398],{"class":205},", stats.",[195,2400,2401],{"class":212},"totalPlayers",[195,2403,1903],{"class":205},[195,2405,2407,2409,2411,2413,2416,2418,2420,2422,2424,2426,2429,2431,2433,2435],{"class":197,"line":2406},40,[195,2408,2386],{"class":219},[195,2410,662],{"class":205},[195,2412,304],{"class":201},[195,2414,2415],{"class":307},"Average Level:",[195,2417,304],{"class":201},[195,2419,1144],{"class":205},[195,2421,665],{"class":219},[195,2423,662],{"class":205},[195,2425,304],{"class":201},[195,2427,2428],{"class":307},"%.1f",[195,2430,304],{"class":201},[195,2432,2398],{"class":205},[195,2434,696],{"class":212},[195,2436,699],{"class":205},[195,2438,2440,2442,2444,2446,2449,2451,2453,2456],{"class":197,"line":2439},41,[195,2441,2386],{"class":219},[195,2443,662],{"class":205},[195,2445,304],{"class":201},[195,2447,2448],{"class":307},"Active Today:",[195,2450,304],{"class":201},[195,2452,2398],{"class":205},[195,2454,2455],{"class":212},"activeToday",[195,2457,1903],{"class":205},[225,2459,2461],{"id":2460},"class-distribution","Class Distribution",[173,2463,2465],{"className":189,"code":2464,"language":191,"meta":182,"style":182},"function GetClassDistribution()\n    local players = db:Collection(\"players\")\n\n    return players:Aggregate({\n        { [\"$match\"] = { banned = false } },\n        {\n            [\"$group\"] = {\n                _id = \"$class\",\n                count = { [\"$sum\"] = 1 },\n                avgLevel = { [\"$avg\"] = \"$level\" },\n                players = { [\"$push\"] = \"$username\" }\n            }\n        },\n        { [\"$sort\"] = { count = -1 } }\n    })\nend\n\nlocal classes = GetClassDistribution()\nfor _, class in ipairs(classes) do\n    print(string.format(\"%s: %d players (avg level %.1f)\",\n        class._id, class.count, class.avgLevel))\nend\n",[180,2466,2467,2476,2500,2504,2516,2539,2543,2559,2573,2595,2621,2649,2653,2657,2683,2687,2691,2695,2708,2724,2743,2761],{"__ignoreMap":182},[195,2468,2469,2471,2474],{"class":197,"line":198},[195,2470,1867],{"class":637},[195,2472,2473],{"class":219}," GetClassDistribution",[195,2475,1873],{"class":201},[195,2477,2478,2480,2482,2484,2486,2488,2490,2492,2494,2496,2498],{"class":197,"line":292},[195,2479,1878],{"class":201},[195,2481,1881],{"class":205},[195,2483,209],{"class":201},[195,2485,1886],{"class":212},[195,2487,216],{"class":205},[195,2489,1891],{"class":219},[195,2491,662],{"class":205},[195,2493,304],{"class":201},[195,2495,1898],{"class":307},[195,2497,304],{"class":201},[195,2499,1903],{"class":205},[195,2501,2502],{"class":197,"line":298},[195,2503,631],{"emptyLinePlaceholder":630},[195,2505,2506,2508,2510,2512,2514],{"class":197,"line":321},[195,2507,2349],{"class":637},[195,2509,1919],{"class":212},[195,2511,216],{"class":205},[195,2513,220],{"class":219},[195,2515,289],{"class":205},[195,2517,2518,2521,2523,2525,2527,2529,2531,2533,2535,2537],{"class":197,"line":350},[195,2519,2520],{"class":205},"        { [",[195,2522,304],{"class":201},[195,2524,308],{"class":307},[195,2526,304],{"class":201},[195,2528,313],{"class":205},[195,2530,209],{"class":201},[195,2532,760],{"class":205},[195,2534,209],{"class":201},[195,2536,765],{"class":201},[195,2538,768],{"class":205},[195,2540,2541],{"class":197,"line":377},[195,2542,1935],{"class":205},[195,2544,2545,2547,2549,2551,2553,2555,2557],{"class":197,"line":383},[195,2546,1940],{"class":205},[195,2548,304],{"class":201},[195,2550,440],{"class":307},[195,2552,304],{"class":201},[195,2554,313],{"class":205},[195,2556,209],{"class":201},[195,2558,318],{"class":205},[195,2560,2561,2563,2565,2567,2569,2571],{"class":197,"line":389},[195,2562,2014],{"class":205},[195,2564,209],{"class":201},[195,2566,458],{"class":201},[195,2568,461],{"class":307},[195,2570,304],{"class":201},[195,2572,466],{"class":205},[195,2574,2575,2577,2579,2581,2583,2585,2587,2589,2591,2593],{"class":197,"line":553},[195,2576,1579],{"class":205},[195,2578,209],{"class":201},[195,2580,329],{"class":205},[195,2582,304],{"class":201},[195,2584,480],{"class":307},[195,2586,304],{"class":201},[195,2588,313],{"class":205},[195,2590,209],{"class":201},[195,2592,489],{"class":343},[195,2594,347],{"class":205},[195,2596,2597,2599,2601,2603,2605,2607,2609,2611,2613,2615,2617,2619],{"class":197,"line":582},[195,2598,2049],{"class":205},[195,2600,209],{"class":201},[195,2602,329],{"class":205},[195,2604,304],{"class":201},[195,2606,505],{"class":307},[195,2608,304],{"class":201},[195,2610,313],{"class":205},[195,2612,209],{"class":201},[195,2614,458],{"class":201},[195,2616,516],{"class":307},[195,2618,519],{"class":201},[195,2620,522],{"class":205},[195,2622,2623,2626,2628,2630,2632,2634,2636,2638,2640,2642,2645,2647],{"class":197,"line":612},[195,2624,2625],{"class":205},"                players ",[195,2627,209],{"class":201},[195,2629,329],{"class":205},[195,2631,304],{"class":201},[195,2633,1826],{"class":307},[195,2635,304],{"class":201},[195,2637,313],{"class":205},[195,2639,209],{"class":201},[195,2641,458],{"class":201},[195,2643,2644],{"class":307},"$username",[195,2646,519],{"class":201},[195,2648,609],{"class":205},[195,2650,2651],{"class":197,"line":617},[195,2652,1157],{"class":205},[195,2654,2655],{"class":197,"line":622},[195,2656,1984],{"class":205},[195,2658,2659,2661,2663,2665,2667,2669,2671,2674,2676,2678,2680],{"class":197,"line":627},[195,2660,2520],{"class":205},[195,2662,304],{"class":201},[195,2664,777],{"class":307},[195,2666,304],{"class":201},[195,2668,313],{"class":205},[195,2670,209],{"class":201},[195,2672,2673],{"class":205}," { count ",[195,2675,209],{"class":201},[195,2677,791],{"class":201},[195,2679,794],{"class":343},[195,2681,2682],{"class":205}," } }\n",[195,2684,2685],{"class":197,"line":634},[195,2686,2338],{"class":205},[195,2688,2689],{"class":197,"line":656},[195,2690,705],{"class":637},[195,2692,2693],{"class":197,"line":679},[195,2694,631],{"emptyLinePlaceholder":630},[195,2696,2697,2699,2702,2704,2706],{"class":197,"line":702},[195,2698,202],{"class":201},[195,2700,2701],{"class":205}," classes ",[195,2703,209],{"class":201},[195,2705,2473],{"class":219},[195,2707,1873],{"class":205},[195,2709,2710,2712,2715,2717,2719,2722],{"class":197,"line":2127},[195,2711,638],{"class":637},[195,2713,2714],{"class":205}," _, class ",[195,2716,644],{"class":637},[195,2718,647],{"class":219},[195,2720,2721],{"class":205},"(classes) ",[195,2723,653],{"class":637},[195,2725,2726,2728,2730,2732,2734,2736,2739,2741],{"class":197,"line":2155},[195,2727,659],{"class":219},[195,2729,662],{"class":205},[195,2731,665],{"class":219},[195,2733,662],{"class":205},[195,2735,304],{"class":201},[195,2737,2738],{"class":307},"%s: %d players (avg level %.1f)",[195,2740,304],{"class":201},[195,2742,466],{"class":205},[195,2744,2745,2748,2750,2753,2755,2757,2759],{"class":197,"line":2165},[195,2746,2747],{"class":205},"        class.",[195,2749,685],{"class":212},[195,2751,2752],{"class":205},", class.",[195,2754,691],{"class":212},[195,2756,2752],{"class":205},[195,2758,696],{"class":212},[195,2760,699],{"class":205},[195,2762,2763],{"class":197,"line":2183},[195,2764,705],{"class":637},[225,2766,2768],{"id":2767},"top-players-leaderboard","Top Players Leaderboard",[173,2770,2772],{"className":189,"code":2771,"language":191,"meta":182,"style":182},"function GetLeaderboard(limit)\n    local players = db:Collection(\"players\")\n\n    return players:Aggregate({\n        -- Filter out banned players\n        {\n            [\"$match\"] = {\n                banned = { [\"$ne\"] = true }\n            }\n        },\n        -- Sort by score\n        {\n            [\"$sort\"] = { score = -1 }\n        },\n        -- Limit results\n        {\n            [\"$limit\"] = limit or 10\n        },\n        -- Project only needed fields\n        {\n            [\"$project\"] = {\n                username = 1,\n                score = 1,\n                level = 1,\n                class = 1,\n                _id = 0\n            }\n        }\n    })\nend\n\nlocal top10 = GetLeaderboard(10)\nprint(\"=== Top 10 Players ===\")\nfor i, player in ipairs(top10) do\n    print(string.format(\"%d. %s - %d points (Level %d %s)\",\n        i, player.username, player.score, player.level, player.class))\nend\n",[180,2773,2774,2789,2813,2817,2829,2834,2838,2854,2876,2880,2884,2889,2893,2917,2921,2926,2930,2953,2957,2962,2966,2982,2993,3004,3015,3026,3034,3038,3042,3046,3050,3054,3070,3085,3101,3120,3146],{"__ignoreMap":182},[195,2775,2776,2778,2781,2783,2787],{"class":197,"line":198},[195,2777,1867],{"class":637},[195,2779,2780],{"class":219}," GetLeaderboard",[195,2782,662],{"class":201},[195,2784,2786],{"class":2785},"sHdIc","limit",[195,2788,1903],{"class":201},[195,2790,2791,2793,2795,2797,2799,2801,2803,2805,2807,2809,2811],{"class":197,"line":292},[195,2792,1878],{"class":201},[195,2794,1881],{"class":205},[195,2796,209],{"class":201},[195,2798,1886],{"class":212},[195,2800,216],{"class":205},[195,2802,1891],{"class":219},[195,2804,662],{"class":205},[195,2806,304],{"class":201},[195,2808,1898],{"class":307},[195,2810,304],{"class":201},[195,2812,1903],{"class":205},[195,2814,2815],{"class":197,"line":298},[195,2816,631],{"emptyLinePlaceholder":630},[195,2818,2819,2821,2823,2825,2827],{"class":197,"line":321},[195,2820,2349],{"class":637},[195,2822,1919],{"class":212},[195,2824,216],{"class":205},[195,2826,220],{"class":219},[195,2828,289],{"class":205},[195,2830,2831],{"class":197,"line":350},[195,2832,2833],{"class":409},"        -- Filter out banned players\n",[195,2835,2836],{"class":197,"line":377},[195,2837,1935],{"class":205},[195,2839,2840,2842,2844,2846,2848,2850,2852],{"class":197,"line":383},[195,2841,1940],{"class":205},[195,2843,304],{"class":201},[195,2845,308],{"class":307},[195,2847,304],{"class":201},[195,2849,313],{"class":205},[195,2851,209],{"class":201},[195,2853,318],{"class":205},[195,2855,2856,2858,2860,2862,2864,2866,2868,2870,2872,2874],{"class":197,"line":389},[195,2857,1957],{"class":205},[195,2859,209],{"class":201},[195,2861,329],{"class":205},[195,2863,304],{"class":201},[195,2865,362],{"class":307},[195,2867,304],{"class":201},[195,2869,313],{"class":205},[195,2871,209],{"class":201},[195,2873,371],{"class":201},[195,2875,374],{"class":205},[195,2877,2878],{"class":197,"line":553},[195,2879,1157],{"class":205},[195,2881,2882],{"class":197,"line":582},[195,2883,1984],{"class":205},[195,2885,2886],{"class":197,"line":612},[195,2887,2888],{"class":409},"        -- Sort by score\n",[195,2890,2891],{"class":197,"line":617},[195,2892,1935],{"class":205},[195,2894,2895,2897,2899,2901,2903,2905,2907,2909,2911,2913,2915],{"class":197,"line":622},[195,2896,1940],{"class":205},[195,2898,304],{"class":201},[195,2900,777],{"class":307},[195,2902,304],{"class":201},[195,2904,313],{"class":205},[195,2906,209],{"class":201},[195,2908,786],{"class":205},[195,2910,209],{"class":201},[195,2912,791],{"class":201},[195,2914,794],{"class":343},[195,2916,374],{"class":205},[195,2918,2919],{"class":197,"line":627},[195,2920,1984],{"class":205},[195,2922,2923],{"class":197,"line":634},[195,2924,2925],{"class":409},"        -- Limit results\n",[195,2927,2928],{"class":197,"line":656},[195,2929,1935],{"class":205},[195,2931,2932,2934,2936,2938,2940,2942,2944,2947,2950],{"class":197,"line":679},[195,2933,1940],{"class":205},[195,2935,304],{"class":201},[195,2937,818],{"class":307},[195,2939,304],{"class":201},[195,2941,313],{"class":205},[195,2943,209],{"class":201},[195,2945,2946],{"class":205}," limit ",[195,2948,2949],{"class":201},"or",[195,2951,2952],{"class":343}," 10\n",[195,2954,2955],{"class":197,"line":702},[195,2956,1984],{"class":205},[195,2958,2959],{"class":197,"line":2127},[195,2960,2961],{"class":409},"        -- Project only needed fields\n",[195,2963,2964],{"class":197,"line":2155},[195,2965,1935],{"class":205},[195,2967,2968,2970,2972,2974,2976,2978,2980],{"class":197,"line":2165},[195,2969,1940],{"class":205},[195,2971,304],{"class":201},[195,2973,1042],{"class":307},[195,2975,304],{"class":201},[195,2977,313],{"class":205},[195,2979,209],{"class":201},[195,2981,318],{"class":205},[195,2983,2984,2987,2989,2991],{"class":197,"line":2183},[195,2985,2986],{"class":205},"                username ",[195,2988,209],{"class":201},[195,2990,489],{"class":343},[195,2992,466],{"class":205},[195,2994,2995,2998,3000,3002],{"class":197,"line":2202},[195,2996,2997],{"class":205},"                score ",[195,2999,209],{"class":201},[195,3001,489],{"class":343},[195,3003,466],{"class":205},[195,3005,3006,3009,3011,3013],{"class":197,"line":2221},[195,3007,3008],{"class":205},"                level ",[195,3010,209],{"class":201},[195,3012,489],{"class":343},[195,3014,466],{"class":205},[195,3016,3017,3020,3022,3024],{"class":197,"line":2262},[195,3018,3019],{"class":205},"                class ",[195,3021,209],{"class":201},[195,3023,489],{"class":343},[195,3025,466],{"class":205},[195,3027,3028,3030,3032],{"class":197,"line":2268},[195,3029,2014],{"class":205},[195,3031,209],{"class":201},[195,3033,2304],{"class":343},[195,3035,3036],{"class":197,"line":2288},[195,3037,1157],{"class":205},[195,3039,3040],{"class":197,"line":2307},[195,3041,380],{"class":205},[195,3043,3044],{"class":197,"line":2313},[195,3045,2338],{"class":205},[195,3047,3048],{"class":197,"line":2319},[195,3049,705],{"class":637},[195,3051,3052],{"class":197,"line":2325},[195,3053,631],{"emptyLinePlaceholder":630},[195,3055,3056,3058,3060,3062,3064,3066,3068],{"class":197,"line":2330},[195,3057,202],{"class":201},[195,3059,848],{"class":205},[195,3061,209],{"class":201},[195,3063,2780],{"class":219},[195,3065,662],{"class":205},[195,3067,1527],{"class":343},[195,3069,1903],{"class":205},[195,3071,3072,3074,3076,3078,3081,3083],{"class":197,"line":2335},[195,3073,2386],{"class":219},[195,3075,662],{"class":205},[195,3077,304],{"class":201},[195,3079,3080],{"class":307},"=== Top 10 Players ===",[195,3082,304],{"class":201},[195,3084,1903],{"class":205},[195,3086,3087,3089,3092,3094,3096,3099],{"class":197,"line":2341},[195,3088,638],{"class":637},[195,3090,3091],{"class":205}," i, player ",[195,3093,644],{"class":637},[195,3095,647],{"class":219},[195,3097,3098],{"class":205},"(top10) ",[195,3100,653],{"class":637},[195,3102,3103,3105,3107,3109,3111,3113,3116,3118],{"class":197,"line":2346},[195,3104,659],{"class":219},[195,3106,662],{"class":205},[195,3108,665],{"class":219},[195,3110,662],{"class":205},[195,3112,304],{"class":201},[195,3114,3115],{"class":307},"%d. %s - %d points (Level %d %s)",[195,3117,304],{"class":201},[195,3119,466],{"class":205},[195,3121,3122,3125,3128,3131,3134,3136,3139,3141,3144],{"class":197,"line":2360},[195,3123,3124],{"class":205},"        i, player.",[195,3126,3127],{"class":212},"username",[195,3129,3130],{"class":205},", player.",[195,3132,3133],{"class":212},"score",[195,3135,3130],{"class":205},[195,3137,3138],{"class":212},"level",[195,3140,3130],{"class":205},[195,3142,3143],{"class":212},"class",[195,3145,699],{"class":205},[195,3147,3148],{"class":197,"line":2365},[195,3149,705],{"class":637},[225,3151,3153],{"id":3152},"time-based-analytics","Time-Based Analytics",[173,3155,3157],{"className":189,"code":3156,"language":191,"meta":182,"style":182},"function GetDailyActivity(days)\n    local logs = db:Collection(\"login_logs\")\n\n    return logs:Aggregate({\n        {\n            [\"$match\"] = {\n                timestamp = { [\"$gte\"] = os.time() - (days * 86400) }\n            }\n        },\n        {\n            [\"$group\"] = {\n                _id = {\n                    [\"$floor\"] = {\n                        [\"$divide\"] = { \"$timestamp\", 86400 }\n                    }\n                },\n                logins = { [\"$sum\"] = 1 },\n                uniquePlayers = { [\"$addToSet\"] = \"$steamid\" }\n            }\n        },\n        {\n            [\"$project\"] = {\n                day = \"$_id\",\n                logins = 1,\n                uniqueCount = { [\"$size\"] = \"$uniquePlayers\" }\n            }\n        },\n        { [\"$sort\"] = { day = 1 } }\n    })\nend\n",[180,3158,3159,3173,3199,3203,3216,3220,3236,3273,3277,3281,3285,3301,3309,3326,3356,3360,3365,3388,3416,3420,3424,3428,3444,3460,3470,3499,3503,3507,3530,3534],{"__ignoreMap":182},[195,3160,3161,3163,3166,3168,3171],{"class":197,"line":198},[195,3162,1867],{"class":637},[195,3164,3165],{"class":219}," GetDailyActivity",[195,3167,662],{"class":201},[195,3169,3170],{"class":2785},"days",[195,3172,1903],{"class":201},[195,3174,3175,3177,3180,3182,3184,3186,3188,3190,3192,3195,3197],{"class":197,"line":292},[195,3176,1878],{"class":201},[195,3178,3179],{"class":205}," logs ",[195,3181,209],{"class":201},[195,3183,1886],{"class":212},[195,3185,216],{"class":205},[195,3187,1891],{"class":219},[195,3189,662],{"class":205},[195,3191,304],{"class":201},[195,3193,3194],{"class":307},"login_logs",[195,3196,304],{"class":201},[195,3198,1903],{"class":205},[195,3200,3201],{"class":197,"line":298},[195,3202,631],{"emptyLinePlaceholder":630},[195,3204,3205,3207,3210,3212,3214],{"class":197,"line":321},[195,3206,2349],{"class":637},[195,3208,3209],{"class":212}," logs",[195,3211,216],{"class":205},[195,3213,220],{"class":219},[195,3215,289],{"class":205},[195,3217,3218],{"class":197,"line":350},[195,3219,1935],{"class":205},[195,3221,3222,3224,3226,3228,3230,3232,3234],{"class":197,"line":377},[195,3223,1940],{"class":205},[195,3225,304],{"class":201},[195,3227,308],{"class":307},[195,3229,304],{"class":201},[195,3231,313],{"class":205},[195,3233,209],{"class":201},[195,3235,318],{"class":205},[195,3237,3238,3241,3243,3245,3247,3249,3251,3253,3255,3258,3260,3262,3265,3268,3270],{"class":197,"line":383},[195,3239,3240],{"class":205},"                timestamp ",[195,3242,209],{"class":201},[195,3244,329],{"class":205},[195,3246,304],{"class":201},[195,3248,334],{"class":307},[195,3250,304],{"class":201},[195,3252,313],{"class":205},[195,3254,209],{"class":201},[195,3256,3257],{"class":219}," os.time",[195,3259,2251],{"class":205},[195,3261,2254],{"class":201},[195,3263,3264],{"class":205}," (days ",[195,3266,3267],{"class":201},"*",[195,3269,2257],{"class":343},[195,3271,3272],{"class":205},") }\n",[195,3274,3275],{"class":197,"line":389},[195,3276,1157],{"class":205},[195,3278,3279],{"class":197,"line":553},[195,3280,1984],{"class":205},[195,3282,3283],{"class":197,"line":582},[195,3284,1935],{"class":205},[195,3286,3287,3289,3291,3293,3295,3297,3299],{"class":197,"line":612},[195,3288,1940],{"class":205},[195,3290,304],{"class":201},[195,3292,440],{"class":307},[195,3294,304],{"class":201},[195,3296,313],{"class":205},[195,3298,209],{"class":201},[195,3300,318],{"class":205},[195,3302,3303,3305,3307],{"class":197,"line":617},[195,3304,2014],{"class":205},[195,3306,209],{"class":201},[195,3308,318],{"class":205},[195,3310,3311,3313,3315,3318,3320,3322,3324],{"class":197,"line":622},[195,3312,2168],{"class":205},[195,3314,304],{"class":201},[195,3316,3317],{"class":307},"$floor",[195,3319,304],{"class":201},[195,3321,313],{"class":205},[195,3323,209],{"class":201},[195,3325,318],{"class":205},[195,3327,3328,3330,3332,3334,3336,3338,3340,3342,3344,3347,3349,3351,3354],{"class":197,"line":627},[195,3329,2186],{"class":205},[195,3331,304],{"class":201},[195,3333,1125],{"class":307},[195,3335,304],{"class":201},[195,3337,313],{"class":205},[195,3339,209],{"class":201},[195,3341,1134],{"class":205},[195,3343,304],{"class":201},[195,3345,3346],{"class":307},"$timestamp",[195,3348,304],{"class":201},[195,3350,1144],{"class":205},[195,3352,3353],{"class":343},"86400",[195,3355,374],{"class":205},[195,3357,3358],{"class":197,"line":634},[195,3359,2316],{"class":205},[195,3361,3362],{"class":197,"line":656},[195,3363,3364],{"class":205},"                },\n",[195,3366,3367,3370,3372,3374,3376,3378,3380,3382,3384,3386],{"class":197,"line":679},[195,3368,3369],{"class":205},"                logins ",[195,3371,209],{"class":201},[195,3373,329],{"class":205},[195,3375,304],{"class":201},[195,3377,480],{"class":307},[195,3379,304],{"class":201},[195,3381,313],{"class":205},[195,3383,209],{"class":201},[195,3385,489],{"class":343},[195,3387,347],{"class":205},[195,3389,3390,3393,3395,3397,3399,3401,3403,3405,3407,3409,3412,3414],{"class":197,"line":702},[195,3391,3392],{"class":205},"                uniquePlayers ",[195,3394,209],{"class":201},[195,3396,329],{"class":205},[195,3398,304],{"class":201},[195,3400,1841],{"class":307},[195,3402,304],{"class":201},[195,3404,313],{"class":205},[195,3406,209],{"class":201},[195,3408,458],{"class":201},[195,3410,3411],{"class":307},"$steamid",[195,3413,519],{"class":201},[195,3415,609],{"class":205},[195,3417,3418],{"class":197,"line":2127},[195,3419,1157],{"class":205},[195,3421,3422],{"class":197,"line":2155},[195,3423,1984],{"class":205},[195,3425,3426],{"class":197,"line":2165},[195,3427,1935],{"class":205},[195,3429,3430,3432,3434,3436,3438,3440,3442],{"class":197,"line":2183},[195,3431,1940],{"class":205},[195,3433,304],{"class":201},[195,3435,1042],{"class":307},[195,3437,304],{"class":201},[195,3439,313],{"class":205},[195,3441,209],{"class":201},[195,3443,318],{"class":205},[195,3445,3446,3449,3451,3453,3456,3458],{"class":197,"line":2202},[195,3447,3448],{"class":205},"                day ",[195,3450,209],{"class":201},[195,3452,458],{"class":201},[195,3454,3455],{"class":307},"$_id",[195,3457,304],{"class":201},[195,3459,466],{"class":205},[195,3461,3462,3464,3466,3468],{"class":197,"line":2221},[195,3463,3369],{"class":205},[195,3465,209],{"class":201},[195,3467,489],{"class":343},[195,3469,466],{"class":205},[195,3471,3472,3475,3477,3479,3481,3484,3486,3488,3490,3492,3495,3497],{"class":197,"line":2262},[195,3473,3474],{"class":205},"                uniqueCount ",[195,3476,209],{"class":201},[195,3478,329],{"class":205},[195,3480,304],{"class":201},[195,3482,3483],{"class":307},"$size",[195,3485,304],{"class":201},[195,3487,313],{"class":205},[195,3489,209],{"class":201},[195,3491,458],{"class":201},[195,3493,3494],{"class":307},"$uniquePlayers",[195,3496,519],{"class":201},[195,3498,609],{"class":205},[195,3500,3501],{"class":197,"line":2268},[195,3502,1157],{"class":205},[195,3504,3505],{"class":197,"line":2288},[195,3506,1984],{"class":205},[195,3508,3509,3511,3513,3515,3517,3519,3521,3524,3526,3528],{"class":197,"line":2307},[195,3510,2520],{"class":205},[195,3512,304],{"class":201},[195,3514,777],{"class":307},[195,3516,304],{"class":201},[195,3518,313],{"class":205},[195,3520,209],{"class":201},[195,3522,3523],{"class":205}," { day ",[195,3525,209],{"class":201},[195,3527,489],{"class":343},[195,3529,2682],{"class":205},[195,3531,3532],{"class":197,"line":2313},[195,3533,2338],{"class":205},[195,3535,3536],{"class":197,"line":2319},[195,3537,705],{"class":637},[225,3539,3541],{"id":3540},"async-aggregation","Async Aggregation",[173,3543,3545],{"className":189,"code":3544,"language":191,"meta":182,"style":182},"collection:AggregateAsync({\n    { [\"$group\"] = { _id = \"$class\", count = { [\"$sum\"] = 1 } } }\n}, function(err, results)\n    if err then\n        print(\"Aggregation error:\", err)\n        return\n    end\n\n    for _, result in ipairs(results) do\n        print(result._id, \":\", result.count)\n    end\nend)\n",[180,3546,3547,3559,3606,3626,3637,3654,3659,3664,3668,3685,3709,3713],{"__ignoreMap":182},[195,3548,3549,3552,3554,3557],{"class":197,"line":198},[195,3550,3551],{"class":212},"collection",[195,3553,216],{"class":205},[195,3555,3556],{"class":219},"AggregateAsync",[195,3558,289],{"class":205},[195,3560,3561,3563,3565,3567,3569,3571,3573,3576,3578,3580,3582,3584,3587,3589,3591,3593,3595,3597,3599,3601,3603],{"class":197,"line":292},[195,3562,747],{"class":205},[195,3564,304],{"class":201},[195,3566,440],{"class":307},[195,3568,304],{"class":201},[195,3570,313],{"class":205},[195,3572,209],{"class":201},[195,3574,3575],{"class":205}," { _id ",[195,3577,209],{"class":201},[195,3579,458],{"class":201},[195,3581,461],{"class":307},[195,3583,304],{"class":201},[195,3585,3586],{"class":205},", count ",[195,3588,209],{"class":201},[195,3590,329],{"class":205},[195,3592,304],{"class":201},[195,3594,480],{"class":307},[195,3596,304],{"class":201},[195,3598,313],{"class":205},[195,3600,209],{"class":201},[195,3602,489],{"class":343},[195,3604,3605],{"class":205}," } } }\n",[195,3607,3608,3611,3613,3615,3618,3621,3624],{"class":197,"line":298},[195,3609,3610],{"class":205},"}, ",[195,3612,1867],{"class":637},[195,3614,662],{"class":201},[195,3616,3617],{"class":2785},"err",[195,3619,3620],{"class":201},",",[195,3622,3623],{"class":2785}," results",[195,3625,1903],{"class":201},[195,3627,3628,3631,3634],{"class":197,"line":321},[195,3629,3630],{"class":637},"    if",[195,3632,3633],{"class":205}," err ",[195,3635,3636],{"class":637},"then\n",[195,3638,3639,3642,3644,3646,3649,3651],{"class":197,"line":350},[195,3640,3641],{"class":219},"        print",[195,3643,662],{"class":205},[195,3645,304],{"class":201},[195,3647,3648],{"class":307},"Aggregation error:",[195,3650,304],{"class":201},[195,3652,3653],{"class":205},", err)\n",[195,3655,3656],{"class":197,"line":377},[195,3657,3658],{"class":637},"        return\n",[195,3660,3661],{"class":197,"line":383},[195,3662,3663],{"class":637},"    end\n",[195,3665,3666],{"class":197,"line":389},[195,3667,631],{"emptyLinePlaceholder":630},[195,3669,3670,3673,3676,3678,3680,3683],{"class":197,"line":553},[195,3671,3672],{"class":637},"    for",[195,3674,3675],{"class":205}," _, result ",[195,3677,644],{"class":637},[195,3679,647],{"class":219},[195,3681,3682],{"class":205},"(results) ",[195,3684,653],{"class":637},[195,3686,3687,3689,3692,3694,3696,3698,3700,3702,3705,3707],{"class":197,"line":582},[195,3688,3641],{"class":219},[195,3690,3691],{"class":205},"(result.",[195,3693,685],{"class":212},[195,3695,1144],{"class":205},[195,3697,304],{"class":201},[195,3699,216],{"class":307},[195,3701,304],{"class":201},[195,3703,3704],{"class":205},", result.",[195,3706,691],{"class":212},[195,3708,1903],{"class":205},[195,3710,3711],{"class":197,"line":612},[195,3712,3663],{"class":637},[195,3714,3715,3718],{"class":197,"line":617},[195,3716,3717],{"class":637},"end",[195,3719,1903],{"class":205},[165,3721,3723],{"id":3722},"performance-tips","Performance Tips",[3725,3726,3727,3734,3740,3746],"ol",{},[233,3728,3729,3733],{},[3730,3731,3732],"strong",{},"Use $match early",": Filter documents before expensive operations",[233,3735,3736,3739],{},[3730,3737,3738],{},"Use indexes",": Ensure $match and $sort use indexed fields",[233,3741,3742,3745],{},[3730,3743,3744],{},"Limit fields",": Use $project to reduce data size",[233,3747,3748,3751],{},[3730,3749,3750],{},"Consider $limit",": Don't process more data than needed",[173,3753,3755],{"className":189,"code":3754,"language":191,"meta":182,"style":182},"-- Good: Filter first\n{\n    { [\"$match\"] = { active = true } },\n    { [\"$group\"] = { ... } }\n}\n\n-- Bad: Group all then filter\n{\n    { [\"$group\"] = { ... } },\n    { [\"$match\"] = { count = { [\"$gt\"] = 10 } } }\n}\n",[180,3756,3757,3762,3767,3790,3811,3815,3819,3824,3828,3848,3883],{"__ignoreMap":182},[195,3758,3759],{"class":197,"line":198},[195,3760,3761],{"class":409},"-- Good: Filter first\n",[195,3763,3764],{"class":197,"line":292},[195,3765,3766],{"class":205},"{\n",[195,3768,3769,3771,3773,3775,3777,3779,3781,3784,3786,3788],{"class":197,"line":298},[195,3770,747],{"class":205},[195,3772,304],{"class":201},[195,3774,308],{"class":307},[195,3776,304],{"class":201},[195,3778,313],{"class":205},[195,3780,209],{"class":201},[195,3782,3783],{"class":205}," { active ",[195,3785,209],{"class":201},[195,3787,371],{"class":201},[195,3789,768],{"class":205},[195,3791,3792,3794,3796,3798,3800,3802,3804,3806,3809],{"class":197,"line":321},[195,3793,747],{"class":205},[195,3795,304],{"class":201},[195,3797,440],{"class":307},[195,3799,304],{"class":201},[195,3801,313],{"class":205},[195,3803,209],{"class":201},[195,3805,1134],{"class":205},[195,3807,3808],{"class":201},"...",[195,3810,2682],{"class":205},[195,3812,3813],{"class":197,"line":350},[195,3814,609],{"class":205},[195,3816,3817],{"class":197,"line":377},[195,3818,631],{"emptyLinePlaceholder":630},[195,3820,3821],{"class":197,"line":383},[195,3822,3823],{"class":409},"-- Bad: Group all then filter\n",[195,3825,3826],{"class":197,"line":389},[195,3827,3766],{"class":205},[195,3829,3830,3832,3834,3836,3838,3840,3842,3844,3846],{"class":197,"line":553},[195,3831,747],{"class":205},[195,3833,304],{"class":201},[195,3835,440],{"class":307},[195,3837,304],{"class":201},[195,3839,313],{"class":205},[195,3841,209],{"class":201},[195,3843,1134],{"class":205},[195,3845,3808],{"class":201},[195,3847,768],{"class":205},[195,3849,3850,3852,3854,3856,3858,3860,3862,3864,3866,3868,3870,3873,3875,3877,3879,3881],{"class":197,"line":582},[195,3851,747],{"class":205},[195,3853,304],{"class":201},[195,3855,308],{"class":307},[195,3857,304],{"class":201},[195,3859,313],{"class":205},[195,3861,209],{"class":201},[195,3863,2673],{"class":205},[195,3865,209],{"class":201},[195,3867,329],{"class":205},[195,3869,304],{"class":201},[195,3871,3872],{"class":307},"$gt",[195,3874,304],{"class":201},[195,3876,313],{"class":205},[195,3878,209],{"class":201},[195,3880,344],{"class":343},[195,3882,3605],{"class":205},[195,3884,3885],{"class":197,"line":612},[195,3886,609],{"class":205},[165,3888,3890],{"id":3889},"next-steps","Next Steps",[230,3892,3893,3900],{},[233,3894,3895,3899],{},[3896,3897,3898],"a",{"href":98},"Index Management"," - Optimize aggregation performance",[233,3901,3902,3904],{},[3896,3903,103],{"href":104}," - More aggregation examples",[3906,3907,3908],"style",{},"html pre.shiki code .sMK4o, html code.shiki .sMK4o{--shiki-light:#39ADB5;--shiki-default:#89DDFF;--shiki-dark:#89DDFF}html pre.shiki code .sTEyZ, html code.shiki .sTEyZ{--shiki-light:#90A4AE;--shiki-default:#EEFFFF;--shiki-dark:#BABED8}html pre.shiki code .sBMFI, html code.shiki .sBMFI{--shiki-light:#E2931D;--shiki-default:#FFCB6B;--shiki-dark:#FFCB6B}html pre.shiki code .s2Zo4, html code.shiki .s2Zo4{--shiki-light:#6182B8;--shiki-default:#82AAFF;--shiki-dark:#82AAFF}html .light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html.light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html pre.shiki code .sfazB, html code.shiki .sfazB{--shiki-light:#91B859;--shiki-default:#C3E88D;--shiki-dark:#C3E88D}html pre.shiki code .sbssI, html code.shiki .sbssI{--shiki-light:#F76D47;--shiki-default:#F78C6C;--shiki-dark:#F78C6C}html pre.shiki code .sHwdD, html code.shiki .sHwdD{--shiki-light:#90A4AE;--shiki-light-font-style:italic;--shiki-default:#546E7A;--shiki-default-font-style:italic;--shiki-dark:#676E95;--shiki-dark-font-style:italic}html pre.shiki code .s7zQu, html code.shiki .s7zQu{--shiki-light:#39ADB5;--shiki-light-font-style:italic;--shiki-default:#89DDFF;--shiki-default-font-style:italic;--shiki-dark:#89DDFF;--shiki-dark-font-style:italic}html pre.shiki code .sHdIc, html code.shiki .sHdIc{--shiki-light:#90A4AE;--shiki-light-font-style:italic;--shiki-default:#EEFFFF;--shiki-default-font-style:italic;--shiki-dark:#BABED8;--shiki-dark-font-style:italic}",{"title":182,"searchDepth":198,"depth":292,"links":3910},[3911,3912,3916,3927,3928,3935,3936],{"id":167,"depth":292,"text":168},{"id":185,"depth":292,"text":186,"children":3913},[3914,3915],{"id":227,"depth":298,"text":228},{"id":241,"depth":298,"text":242},{"id":259,"depth":292,"text":260,"children":3917},[3918,3919,3920,3921,3922,3923,3924,3925,3926],{"id":263,"depth":298,"text":264},{"id":395,"depth":298,"text":396},{"id":719,"depth":298,"text":720},{"id":835,"depth":298,"text":836},{"id":907,"depth":298,"text":908},{"id":1003,"depth":298,"text":1004},{"id":1172,"depth":298,"text":1173},{"id":1299,"depth":298,"text":1300},{"id":1451,"depth":298,"text":1452},{"id":1704,"depth":292,"text":1705},{"id":1852,"depth":292,"text":1853,"children":3929},[3930,3931,3932,3933,3934],{"id":1856,"depth":298,"text":1857},{"id":2460,"depth":298,"text":2461},{"id":2767,"depth":298,"text":2768},{"id":3152,"depth":298,"text":3153},{"id":3540,"depth":298,"text":3541},{"id":3722,"depth":292,"text":3723},{"id":3889,"depth":292,"text":3890},"Analyze and transform data with MongoDB aggregation","md",null,{},{"icon":95},{"title":92,"description":3937},"cJd-NYXAvl8RjniMdcWy0SLWi2tNIUonBoUe-8amc6E",[3945,3947],{"title":85,"path":86,"stem":87,"description":3946,"icon":90,"children":-1},"Aggregation pipelines, indexes, and advanced MongoDB operations",{"title":97,"path":98,"stem":99,"description":3948,"icon":63,"children":-1},"Create and manage indexes for optimal query performance",1774271024437]