[{"data":1,"prerenderedAt":4553},["ShallowReactive",2],{"navigation":3,"\u002Fcrud-operations\u002Fasync":151,"\u002Fcrud-operations\u002Fasync-surround":4548},[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":75,"body":153,"description":4541,"extension":4542,"links":4543,"meta":4544,"navigation":4545,"path":76,"seo":4546,"stem":77,"__hash__":4547},"docs\u002F3.crud-operations\u002F6.async.md",{"type":154,"value":155,"toc":4514},"minimark",[156,160,164,169,174,230,234,302,306,309,366,370,373,378,466,470,565,568,571,587,614,904,908,1034,1038,1128,1131,1135,1263,1267,1395,1398,1402,1514,1518,1621,1625,1629,1828,1832,1836,2483,2487,2816,2820,3231,3235,3545,3549,3553,3635,3639,3932,3936,4077,4081,4115,4487,4491,4510],[157,158,75],"h1",{"id":159},"async-operations",[161,162,163],"p",{},"Async operations allow your server to continue processing while database operations complete in the background.",[165,166,168],"h2",{"id":167},"why-use-async","Why Use Async?",[170,171,173],"h3",{"id":172},"synchronous-blocking","Synchronous (Blocking)",[175,176,181],"pre",{"className":177,"code":178,"language":179,"meta":180,"style":180},"language-lua shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","-- This blocks the server until complete\nlocal result = collection:Find({})  -- Server pauses here\n-- Other players experience lag\n","lua","",[182,183,184,193,224],"code",{"__ignoreMap":180},[185,186,189],"span",{"class":187,"line":188},"line",1,[185,190,192],{"class":191},"sHwdD","-- This blocks the server until complete\n",[185,194,196,200,204,207,211,214,218,221],{"class":187,"line":195},2,[185,197,199],{"class":198},"sMK4o","local",[185,201,203],{"class":202},"sTEyZ"," result ",[185,205,206],{"class":198},"=",[185,208,210],{"class":209},"sBMFI"," collection",[185,212,213],{"class":202},":",[185,215,217],{"class":216},"s2Zo4","Find",[185,219,220],{"class":202},"({})  ",[185,222,223],{"class":191},"-- Server pauses here\n",[185,225,227],{"class":187,"line":226},3,[185,228,229],{"class":191},"-- Other players experience lag\n",[170,231,233],{"id":232},"asynchronous-non-blocking","Asynchronous (Non-Blocking)",[175,235,237],{"className":177,"code":236,"language":179,"meta":180,"style":180},"-- This returns immediately\ncollection:FindAsync({}, nil, function(err, result)\n    -- Called when complete\nend)\n-- Server continues running\n",[182,238,239,244,283,288,296],{"__ignoreMap":180},[185,240,241],{"class":187,"line":188},[185,242,243],{"class":191},"-- This returns immediately\n",[185,245,246,249,251,254,257,260,263,267,270,274,277,280],{"class":187,"line":195},[185,247,248],{"class":209},"collection",[185,250,213],{"class":202},[185,252,253],{"class":216},"FindAsync",[185,255,256],{"class":202},"({}, ",[185,258,259],{"class":198},"nil",[185,261,262],{"class":202},", ",[185,264,266],{"class":265},"s7zQu","function",[185,268,269],{"class":198},"(",[185,271,273],{"class":272},"sHdIc","err",[185,275,276],{"class":198},",",[185,278,279],{"class":272}," result",[185,281,282],{"class":198},")\n",[185,284,285],{"class":187,"line":226},[185,286,287],{"class":191},"    -- Called when complete\n",[185,289,291,294],{"class":187,"line":290},4,[185,292,293],{"class":265},"end",[185,295,282],{"class":202},[185,297,299],{"class":187,"line":298},5,[185,300,301],{"class":191},"-- Server continues running\n",[165,303,305],{"id":304},"callback-pattern","Callback Pattern",[161,307,308],{},"All async operations use callbacks with this signature:",[175,310,312],{"className":177,"code":311,"language":179,"meta":180,"style":180},"function(err, result)\n    if err then\n        -- Handle error\n    else\n        -- Process result\n    end\nend\n",[182,313,314,328,339,344,349,354,360],{"__ignoreMap":180},[185,315,316,318,320,322,324,326],{"class":187,"line":188},[185,317,266],{"class":265},[185,319,269],{"class":198},[185,321,273],{"class":272},[185,323,276],{"class":198},[185,325,279],{"class":272},[185,327,282],{"class":198},[185,329,330,333,336],{"class":187,"line":195},[185,331,332],{"class":265},"    if",[185,334,335],{"class":202}," err ",[185,337,338],{"class":265},"then\n",[185,340,341],{"class":187,"line":226},[185,342,343],{"class":191},"        -- Handle error\n",[185,345,346],{"class":187,"line":290},[185,347,348],{"class":265},"    else\n",[185,350,351],{"class":187,"line":298},[185,352,353],{"class":191},"        -- Process result\n",[185,355,357],{"class":187,"line":356},6,[185,358,359],{"class":265},"    end\n",[185,361,363],{"class":187,"line":362},7,[185,364,365],{"class":265},"end\n",[165,367,369],{"id":368},"available-async-methods","Available Async Methods",[170,371,55],{"id":372},"insert-operations",[374,375,377],"h4",{"id":376},"insertoneasync","InsertOneAsync",[175,379,381],{"className":177,"code":380,"language":179,"meta":180,"style":180},"collection:InsertOneAsync(document, function(err, insertedId)\n    if err then\n        print(\"Insert error:\", err)\n        return\n    end\n    print(\"Inserted with ID:\", insertedId)\nend)\n",[182,382,383,407,415,434,439,443,460],{"__ignoreMap":180},[185,384,385,387,389,391,394,396,398,400,402,405],{"class":187,"line":188},[185,386,248],{"class":209},[185,388,213],{"class":202},[185,390,377],{"class":216},[185,392,393],{"class":202},"(document, ",[185,395,266],{"class":265},[185,397,269],{"class":198},[185,399,273],{"class":272},[185,401,276],{"class":198},[185,403,404],{"class":272}," insertedId",[185,406,282],{"class":198},[185,408,409,411,413],{"class":187,"line":195},[185,410,332],{"class":265},[185,412,335],{"class":202},[185,414,338],{"class":265},[185,416,417,420,422,425,429,431],{"class":187,"line":226},[185,418,419],{"class":216},"        print",[185,421,269],{"class":202},[185,423,424],{"class":198},"\"",[185,426,428],{"class":427},"sfazB","Insert error:",[185,430,424],{"class":198},[185,432,433],{"class":202},", err)\n",[185,435,436],{"class":187,"line":290},[185,437,438],{"class":265},"        return\n",[185,440,441],{"class":187,"line":298},[185,442,359],{"class":265},[185,444,445,448,450,452,455,457],{"class":187,"line":356},[185,446,447],{"class":216},"    print",[185,449,269],{"class":202},[185,451,424],{"class":198},[185,453,454],{"class":427},"Inserted with ID:",[185,456,424],{"class":198},[185,458,459],{"class":202},", insertedId)\n",[185,461,462,464],{"class":187,"line":362},[185,463,293],{"class":265},[185,465,282],{"class":202},[374,467,469],{"id":468},"insertmanyasync","InsertManyAsync",[175,471,473],{"className":177,"code":472,"language":179,"meta":180,"style":180},"collection:InsertManyAsync(documents, function(err, insertedIds)\n    if err then\n        print(\"Insert error:\", err)\n        return\n    end\n    print(\"Inserted\", #insertedIds, \"documents\")\nend)\n",[182,474,475,499,507,521,525,529,559],{"__ignoreMap":180},[185,476,477,479,481,483,486,488,490,492,494,497],{"class":187,"line":188},[185,478,248],{"class":209},[185,480,213],{"class":202},[185,482,469],{"class":216},[185,484,485],{"class":202},"(documents, ",[185,487,266],{"class":265},[185,489,269],{"class":198},[185,491,273],{"class":272},[185,493,276],{"class":198},[185,495,496],{"class":272}," insertedIds",[185,498,282],{"class":198},[185,500,501,503,505],{"class":187,"line":195},[185,502,332],{"class":265},[185,504,335],{"class":202},[185,506,338],{"class":265},[185,508,509,511,513,515,517,519],{"class":187,"line":226},[185,510,419],{"class":216},[185,512,269],{"class":202},[185,514,424],{"class":198},[185,516,428],{"class":427},[185,518,424],{"class":198},[185,520,433],{"class":202},[185,522,523],{"class":187,"line":290},[185,524,438],{"class":265},[185,526,527],{"class":187,"line":298},[185,528,359],{"class":265},[185,530,531,533,535,537,540,542,544,547,550,552,555,557],{"class":187,"line":356},[185,532,447],{"class":216},[185,534,269],{"class":202},[185,536,424],{"class":198},[185,538,539],{"class":427},"Inserted",[185,541,424],{"class":198},[185,543,262],{"class":202},[185,545,546],{"class":198},"#",[185,548,549],{"class":202},"insertedIds, ",[185,551,424],{"class":198},[185,553,554],{"class":427},"documents",[185,556,424],{"class":198},[185,558,282],{"class":202},[185,560,561,563],{"class":187,"line":362},[185,562,293],{"class":265},[185,564,282],{"class":202},[170,566,60],{"id":567},"query-operations",[374,569,253],{"id":570},"findasync",[175,572,574],{"className":177,"code":573,"language":179,"meta":180,"style":180},"collection:FindAsync(filter, limit, callback)\n",[182,575,576],{"__ignoreMap":180},[185,577,578,580,582,584],{"class":187,"line":188},[185,579,248],{"class":209},[185,581,213],{"class":202},[185,583,253],{"class":216},[185,585,586],{"class":202},"(filter, limit, callback)\n",[588,589,591],"callout",{"type":590},"warning",[161,592,593,597,598,600,601,606,607,610,611,613],{},[594,595,596],"strong",{},"Important:"," ",[182,599,253],{}," requires a ",[594,602,603],{},[182,604,605],{},"limit"," argument between the filter and the callback. If you omit it (or pass ",[182,608,609],{},"0","), no documents will be returned and your callback will never receive any results. Always pass the maximum number of documents you want returned, or use ",[182,612,259],{}," to return all matching documents (not recommended for large datasets).",[175,615,617],{"className":177,"code":616,"language":179,"meta":180,"style":180},"-- Find up to 100 documents matching a filter\ncollection:FindAsync({ level = { [\"$gte\"] = 10 } }, 100, function(err, documents)\n    if err then\n        print(\"Find error:\", err)\n        return\n    end\n\n    print(\"Found\", #documents, \"documents\")\n    for _, doc in ipairs(documents) do\n        print(\"  -\", doc.username)\n    end\nend)\n\n-- Find all players (use a high limit to retrieve all documents)\ncollection:FindAsync({}, 1000, function(err, documents)\n    if err then\n        print(\"Find error:\", err)\n        return\n    end\n\n    print(\"Total players retrieved:\", #documents)\nend)\n",[182,618,619,624,677,685,700,704,708,714,743,764,786,791,798,803,809,837,846,861,866,871,876,897],{"__ignoreMap":180},[185,620,621],{"class":187,"line":188},[185,622,623],{"class":191},"-- Find up to 100 documents matching a filter\n",[185,625,626,628,630,632,635,637,640,642,645,647,650,652,656,659,662,664,666,668,670,672,675],{"class":187,"line":195},[185,627,248],{"class":209},[185,629,213],{"class":202},[185,631,253],{"class":216},[185,633,634],{"class":202},"({ level ",[185,636,206],{"class":198},[185,638,639],{"class":202}," { [",[185,641,424],{"class":198},[185,643,644],{"class":427},"$gte",[185,646,424],{"class":198},[185,648,649],{"class":202},"] ",[185,651,206],{"class":198},[185,653,655],{"class":654},"sbssI"," 10",[185,657,658],{"class":202}," } }, ",[185,660,661],{"class":654},"100",[185,663,262],{"class":202},[185,665,266],{"class":265},[185,667,269],{"class":198},[185,669,273],{"class":272},[185,671,276],{"class":198},[185,673,674],{"class":272}," documents",[185,676,282],{"class":198},[185,678,679,681,683],{"class":187,"line":226},[185,680,332],{"class":265},[185,682,335],{"class":202},[185,684,338],{"class":265},[185,686,687,689,691,693,696,698],{"class":187,"line":290},[185,688,419],{"class":216},[185,690,269],{"class":202},[185,692,424],{"class":198},[185,694,695],{"class":427},"Find error:",[185,697,424],{"class":198},[185,699,433],{"class":202},[185,701,702],{"class":187,"line":298},[185,703,438],{"class":265},[185,705,706],{"class":187,"line":356},[185,707,359],{"class":265},[185,709,710],{"class":187,"line":362},[185,711,713],{"emptyLinePlaceholder":712},true,"\n",[185,715,717,719,721,723,726,728,730,732,735,737,739,741],{"class":187,"line":716},8,[185,718,447],{"class":216},[185,720,269],{"class":202},[185,722,424],{"class":198},[185,724,725],{"class":427},"Found",[185,727,424],{"class":198},[185,729,262],{"class":202},[185,731,546],{"class":198},[185,733,734],{"class":202},"documents, ",[185,736,424],{"class":198},[185,738,554],{"class":427},[185,740,424],{"class":198},[185,742,282],{"class":202},[185,744,746,749,752,755,758,761],{"class":187,"line":745},9,[185,747,748],{"class":265},"    for",[185,750,751],{"class":202}," _, doc ",[185,753,754],{"class":265},"in",[185,756,757],{"class":216}," ipairs",[185,759,760],{"class":202},"(documents) ",[185,762,763],{"class":265},"do\n",[185,765,767,769,771,773,776,778,781,784],{"class":187,"line":766},10,[185,768,419],{"class":216},[185,770,269],{"class":202},[185,772,424],{"class":198},[185,774,775],{"class":427},"  -",[185,777,424],{"class":198},[185,779,780],{"class":202},", doc.",[185,782,783],{"class":209},"username",[185,785,282],{"class":202},[185,787,789],{"class":187,"line":788},11,[185,790,359],{"class":265},[185,792,794,796],{"class":187,"line":793},12,[185,795,293],{"class":265},[185,797,282],{"class":202},[185,799,801],{"class":187,"line":800},13,[185,802,713],{"emptyLinePlaceholder":712},[185,804,806],{"class":187,"line":805},14,[185,807,808],{"class":191},"-- Find all players (use a high limit to retrieve all documents)\n",[185,810,812,814,816,818,820,823,825,827,829,831,833,835],{"class":187,"line":811},15,[185,813,248],{"class":209},[185,815,213],{"class":202},[185,817,253],{"class":216},[185,819,256],{"class":202},[185,821,822],{"class":654},"1000",[185,824,262],{"class":202},[185,826,266],{"class":265},[185,828,269],{"class":198},[185,830,273],{"class":272},[185,832,276],{"class":198},[185,834,674],{"class":272},[185,836,282],{"class":198},[185,838,840,842,844],{"class":187,"line":839},16,[185,841,332],{"class":265},[185,843,335],{"class":202},[185,845,338],{"class":265},[185,847,849,851,853,855,857,859],{"class":187,"line":848},17,[185,850,419],{"class":216},[185,852,269],{"class":202},[185,854,424],{"class":198},[185,856,695],{"class":427},[185,858,424],{"class":198},[185,860,433],{"class":202},[185,862,864],{"class":187,"line":863},18,[185,865,438],{"class":265},[185,867,869],{"class":187,"line":868},19,[185,870,359],{"class":265},[185,872,874],{"class":187,"line":873},20,[185,875,713],{"emptyLinePlaceholder":712},[185,877,879,881,883,885,888,890,892,894],{"class":187,"line":878},21,[185,880,447],{"class":216},[185,882,269],{"class":202},[185,884,424],{"class":198},[185,886,887],{"class":427},"Total players retrieved:",[185,889,424],{"class":198},[185,891,262],{"class":202},[185,893,546],{"class":198},[185,895,896],{"class":202},"documents)\n",[185,898,900,902],{"class":187,"line":899},22,[185,901,293],{"class":265},[185,903,282],{"class":202},[374,905,907],{"id":906},"findoneasync","FindOneAsync",[175,909,911],{"className":177,"code":910,"language":179,"meta":180,"style":180},"collection:FindOneAsync({ steamid = steamid }, function(err, document)\n    if err then\n        print(\"Find error:\", err)\n        return\n    end\n\n    if document then\n        print(\"Found:\", document.username)\n    else\n        print(\"Not found\")\n    end\nend)\n",[182,912,913,942,950,964,968,972,976,985,1005,1009,1024,1028],{"__ignoreMap":180},[185,914,915,917,919,921,924,926,929,931,933,935,937,940],{"class":187,"line":188},[185,916,248],{"class":209},[185,918,213],{"class":202},[185,920,907],{"class":216},[185,922,923],{"class":202},"({ steamid ",[185,925,206],{"class":198},[185,927,928],{"class":202}," steamid }, ",[185,930,266],{"class":265},[185,932,269],{"class":198},[185,934,273],{"class":272},[185,936,276],{"class":198},[185,938,939],{"class":272}," document",[185,941,282],{"class":198},[185,943,944,946,948],{"class":187,"line":195},[185,945,332],{"class":265},[185,947,335],{"class":202},[185,949,338],{"class":265},[185,951,952,954,956,958,960,962],{"class":187,"line":226},[185,953,419],{"class":216},[185,955,269],{"class":202},[185,957,424],{"class":198},[185,959,695],{"class":427},[185,961,424],{"class":198},[185,963,433],{"class":202},[185,965,966],{"class":187,"line":290},[185,967,438],{"class":265},[185,969,970],{"class":187,"line":298},[185,971,359],{"class":265},[185,973,974],{"class":187,"line":356},[185,975,713],{"emptyLinePlaceholder":712},[185,977,978,980,983],{"class":187,"line":362},[185,979,332],{"class":265},[185,981,982],{"class":202}," document ",[185,984,338],{"class":265},[185,986,987,989,991,993,996,998,1001,1003],{"class":187,"line":716},[185,988,419],{"class":216},[185,990,269],{"class":202},[185,992,424],{"class":198},[185,994,995],{"class":427},"Found:",[185,997,424],{"class":198},[185,999,1000],{"class":202},", document.",[185,1002,783],{"class":209},[185,1004,282],{"class":202},[185,1006,1007],{"class":187,"line":745},[185,1008,348],{"class":265},[185,1010,1011,1013,1015,1017,1020,1022],{"class":187,"line":766},[185,1012,419],{"class":216},[185,1014,269],{"class":202},[185,1016,424],{"class":198},[185,1018,1019],{"class":427},"Not found",[185,1021,424],{"class":198},[185,1023,282],{"class":202},[185,1025,1026],{"class":187,"line":788},[185,1027,359],{"class":265},[185,1029,1030,1032],{"class":187,"line":793},[185,1031,293],{"class":265},[185,1033,282],{"class":202},[374,1035,1037],{"id":1036},"countasync","CountAsync",[175,1039,1041],{"className":177,"code":1040,"language":179,"meta":180,"style":180},"collection:CountAsync({ active = true }, function(err, count)\n    if err then\n        print(\"Count error:\", err)\n        return\n    end\n    print(\"Active players:\", count)\nend)\n",[182,1042,1043,1075,1083,1098,1102,1106,1122],{"__ignoreMap":180},[185,1044,1045,1047,1049,1051,1054,1056,1059,1062,1064,1066,1068,1070,1073],{"class":187,"line":188},[185,1046,248],{"class":209},[185,1048,213],{"class":202},[185,1050,1037],{"class":216},[185,1052,1053],{"class":202},"({ active ",[185,1055,206],{"class":198},[185,1057,1058],{"class":198}," true",[185,1060,1061],{"class":202}," }, ",[185,1063,266],{"class":265},[185,1065,269],{"class":198},[185,1067,273],{"class":272},[185,1069,276],{"class":198},[185,1071,1072],{"class":272}," count",[185,1074,282],{"class":198},[185,1076,1077,1079,1081],{"class":187,"line":195},[185,1078,332],{"class":265},[185,1080,335],{"class":202},[185,1082,338],{"class":265},[185,1084,1085,1087,1089,1091,1094,1096],{"class":187,"line":226},[185,1086,419],{"class":216},[185,1088,269],{"class":202},[185,1090,424],{"class":198},[185,1092,1093],{"class":427},"Count error:",[185,1095,424],{"class":198},[185,1097,433],{"class":202},[185,1099,1100],{"class":187,"line":290},[185,1101,438],{"class":265},[185,1103,1104],{"class":187,"line":298},[185,1105,359],{"class":265},[185,1107,1108,1110,1112,1114,1117,1119],{"class":187,"line":356},[185,1109,447],{"class":216},[185,1111,269],{"class":202},[185,1113,424],{"class":198},[185,1115,1116],{"class":427},"Active players:",[185,1118,424],{"class":198},[185,1120,1121],{"class":202},", count)\n",[185,1123,1124,1126],{"class":187,"line":362},[185,1125,293],{"class":265},[185,1127,282],{"class":202},[170,1129,65],{"id":1130},"update-operations",[374,1132,1134],{"id":1133},"updateoneasync","UpdateOneAsync",[175,1136,1138],{"className":177,"code":1137,"language":179,"meta":180,"style":180},"collection:UpdateOneAsync(\n    { steamid = steamid },\n    { [\"$inc\"] = { credits = 100 } },\n    function(err, modifiedCount)\n        if err then\n            print(\"Update error:\", err)\n            return\n        end\n        print(\"Modified:\", modifiedCount)\n    end\n)\n",[182,1139,1140,1151,1161,1188,1204,1213,1229,1234,1239,1255,1259],{"__ignoreMap":180},[185,1141,1142,1144,1146,1148],{"class":187,"line":188},[185,1143,248],{"class":209},[185,1145,213],{"class":202},[185,1147,1134],{"class":216},[185,1149,1150],{"class":202},"(\n",[185,1152,1153,1156,1158],{"class":187,"line":195},[185,1154,1155],{"class":202},"    { steamid ",[185,1157,206],{"class":198},[185,1159,1160],{"class":202}," steamid },\n",[185,1162,1163,1166,1168,1171,1173,1175,1177,1180,1182,1185],{"class":187,"line":226},[185,1164,1165],{"class":202},"    { [",[185,1167,424],{"class":198},[185,1169,1170],{"class":427},"$inc",[185,1172,424],{"class":198},[185,1174,649],{"class":202},[185,1176,206],{"class":198},[185,1178,1179],{"class":202}," { credits ",[185,1181,206],{"class":198},[185,1183,1184],{"class":654}," 100",[185,1186,1187],{"class":202}," } },\n",[185,1189,1190,1193,1195,1197,1199,1202],{"class":187,"line":290},[185,1191,1192],{"class":265},"    function",[185,1194,269],{"class":198},[185,1196,273],{"class":272},[185,1198,276],{"class":198},[185,1200,1201],{"class":272}," modifiedCount",[185,1203,282],{"class":198},[185,1205,1206,1209,1211],{"class":187,"line":298},[185,1207,1208],{"class":265},"        if",[185,1210,335],{"class":202},[185,1212,338],{"class":265},[185,1214,1215,1218,1220,1222,1225,1227],{"class":187,"line":356},[185,1216,1217],{"class":216},"            print",[185,1219,269],{"class":202},[185,1221,424],{"class":198},[185,1223,1224],{"class":427},"Update error:",[185,1226,424],{"class":198},[185,1228,433],{"class":202},[185,1230,1231],{"class":187,"line":362},[185,1232,1233],{"class":265},"            return\n",[185,1235,1236],{"class":187,"line":716},[185,1237,1238],{"class":265},"        end\n",[185,1240,1241,1243,1245,1247,1250,1252],{"class":187,"line":745},[185,1242,419],{"class":216},[185,1244,269],{"class":202},[185,1246,424],{"class":198},[185,1248,1249],{"class":427},"Modified:",[185,1251,424],{"class":198},[185,1253,1254],{"class":202},", modifiedCount)\n",[185,1256,1257],{"class":187,"line":766},[185,1258,359],{"class":265},[185,1260,1261],{"class":187,"line":788},[185,1262,282],{"class":202},[374,1264,1266],{"id":1265},"updatemanyasync","UpdateManyAsync",[175,1268,1270],{"className":177,"code":1269,"language":179,"meta":180,"style":180},"collection:UpdateManyAsync(\n    { vip = true },\n    { [\"$inc\"] = { bonus = 50 } },\n    function(err, modifiedCount)\n        if err then\n            print(\"Update error:\", err)\n            return\n        end\n        print(\"Updated\", modifiedCount, \"VIP players\")\n    end\n)\n",[182,1271,1272,1282,1294,1318,1332,1340,1354,1358,1362,1387,1391],{"__ignoreMap":180},[185,1273,1274,1276,1278,1280],{"class":187,"line":188},[185,1275,248],{"class":209},[185,1277,213],{"class":202},[185,1279,1266],{"class":216},[185,1281,1150],{"class":202},[185,1283,1284,1287,1289,1291],{"class":187,"line":195},[185,1285,1286],{"class":202},"    { vip ",[185,1288,206],{"class":198},[185,1290,1058],{"class":198},[185,1292,1293],{"class":202}," },\n",[185,1295,1296,1298,1300,1302,1304,1306,1308,1311,1313,1316],{"class":187,"line":226},[185,1297,1165],{"class":202},[185,1299,424],{"class":198},[185,1301,1170],{"class":427},[185,1303,424],{"class":198},[185,1305,649],{"class":202},[185,1307,206],{"class":198},[185,1309,1310],{"class":202}," { bonus ",[185,1312,206],{"class":198},[185,1314,1315],{"class":654}," 50",[185,1317,1187],{"class":202},[185,1319,1320,1322,1324,1326,1328,1330],{"class":187,"line":290},[185,1321,1192],{"class":265},[185,1323,269],{"class":198},[185,1325,273],{"class":272},[185,1327,276],{"class":198},[185,1329,1201],{"class":272},[185,1331,282],{"class":198},[185,1333,1334,1336,1338],{"class":187,"line":298},[185,1335,1208],{"class":265},[185,1337,335],{"class":202},[185,1339,338],{"class":265},[185,1341,1342,1344,1346,1348,1350,1352],{"class":187,"line":356},[185,1343,1217],{"class":216},[185,1345,269],{"class":202},[185,1347,424],{"class":198},[185,1349,1224],{"class":427},[185,1351,424],{"class":198},[185,1353,433],{"class":202},[185,1355,1356],{"class":187,"line":362},[185,1357,1233],{"class":265},[185,1359,1360],{"class":187,"line":716},[185,1361,1238],{"class":265},[185,1363,1364,1366,1368,1370,1373,1375,1378,1380,1383,1385],{"class":187,"line":745},[185,1365,419],{"class":216},[185,1367,269],{"class":202},[185,1369,424],{"class":198},[185,1371,1372],{"class":427},"Updated",[185,1374,424],{"class":198},[185,1376,1377],{"class":202},", modifiedCount, ",[185,1379,424],{"class":198},[185,1381,1382],{"class":427},"VIP players",[185,1384,424],{"class":198},[185,1386,282],{"class":202},[185,1388,1389],{"class":187,"line":766},[185,1390,359],{"class":265},[185,1392,1393],{"class":187,"line":788},[185,1394,282],{"class":202},[170,1396,70],{"id":1397},"delete-operations",[374,1399,1401],{"id":1400},"deleteoneasync","DeleteOneAsync",[175,1403,1405],{"className":177,"code":1404,"language":179,"meta":180,"style":180},"collection:DeleteOneAsync(\n    { steamid = steamid },\n    function(err, deletedCount)\n        if err then\n            print(\"Delete error:\", err)\n            return\n        end\n        if deletedCount > 0 then\n            print(\"Deleted successfully\")\n        end\n    end\n)\n",[182,1406,1407,1417,1425,1440,1448,1463,1467,1471,1487,1502,1506,1510],{"__ignoreMap":180},[185,1408,1409,1411,1413,1415],{"class":187,"line":188},[185,1410,248],{"class":209},[185,1412,213],{"class":202},[185,1414,1401],{"class":216},[185,1416,1150],{"class":202},[185,1418,1419,1421,1423],{"class":187,"line":195},[185,1420,1155],{"class":202},[185,1422,206],{"class":198},[185,1424,1160],{"class":202},[185,1426,1427,1429,1431,1433,1435,1438],{"class":187,"line":226},[185,1428,1192],{"class":265},[185,1430,269],{"class":198},[185,1432,273],{"class":272},[185,1434,276],{"class":198},[185,1436,1437],{"class":272}," deletedCount",[185,1439,282],{"class":198},[185,1441,1442,1444,1446],{"class":187,"line":290},[185,1443,1208],{"class":265},[185,1445,335],{"class":202},[185,1447,338],{"class":265},[185,1449,1450,1452,1454,1456,1459,1461],{"class":187,"line":298},[185,1451,1217],{"class":216},[185,1453,269],{"class":202},[185,1455,424],{"class":198},[185,1457,1458],{"class":427},"Delete error:",[185,1460,424],{"class":198},[185,1462,433],{"class":202},[185,1464,1465],{"class":187,"line":356},[185,1466,1233],{"class":265},[185,1468,1469],{"class":187,"line":362},[185,1470,1238],{"class":265},[185,1472,1473,1475,1478,1481,1484],{"class":187,"line":716},[185,1474,1208],{"class":265},[185,1476,1477],{"class":202}," deletedCount ",[185,1479,1480],{"class":198},">",[185,1482,1483],{"class":654}," 0",[185,1485,1486],{"class":265}," then\n",[185,1488,1489,1491,1493,1495,1498,1500],{"class":187,"line":745},[185,1490,1217],{"class":216},[185,1492,269],{"class":202},[185,1494,424],{"class":198},[185,1496,1497],{"class":427},"Deleted successfully",[185,1499,424],{"class":198},[185,1501,282],{"class":202},[185,1503,1504],{"class":187,"line":766},[185,1505,1238],{"class":265},[185,1507,1508],{"class":187,"line":788},[185,1509,359],{"class":265},[185,1511,1512],{"class":187,"line":793},[185,1513,282],{"class":202},[374,1515,1517],{"id":1516},"deletemanyasync","DeleteManyAsync",[175,1519,1521],{"className":177,"code":1520,"language":179,"meta":180,"style":180},"collection:DeleteManyAsync(\n    { expired = true },\n    function(err, deletedCount)\n        if err then\n            print(\"Delete error:\", err)\n            return\n        end\n        print(\"Deleted\", deletedCount, \"expired records\")\n    end\n)\n",[182,1522,1523,1533,1544,1558,1566,1580,1584,1588,1613,1617],{"__ignoreMap":180},[185,1524,1525,1527,1529,1531],{"class":187,"line":188},[185,1526,248],{"class":209},[185,1528,213],{"class":202},[185,1530,1517],{"class":216},[185,1532,1150],{"class":202},[185,1534,1535,1538,1540,1542],{"class":187,"line":195},[185,1536,1537],{"class":202},"    { expired ",[185,1539,206],{"class":198},[185,1541,1058],{"class":198},[185,1543,1293],{"class":202},[185,1545,1546,1548,1550,1552,1554,1556],{"class":187,"line":226},[185,1547,1192],{"class":265},[185,1549,269],{"class":198},[185,1551,273],{"class":272},[185,1553,276],{"class":198},[185,1555,1437],{"class":272},[185,1557,282],{"class":198},[185,1559,1560,1562,1564],{"class":187,"line":290},[185,1561,1208],{"class":265},[185,1563,335],{"class":202},[185,1565,338],{"class":265},[185,1567,1568,1570,1572,1574,1576,1578],{"class":187,"line":298},[185,1569,1217],{"class":216},[185,1571,269],{"class":202},[185,1573,424],{"class":198},[185,1575,1458],{"class":427},[185,1577,424],{"class":198},[185,1579,433],{"class":202},[185,1581,1582],{"class":187,"line":356},[185,1583,1233],{"class":265},[185,1585,1586],{"class":187,"line":362},[185,1587,1238],{"class":265},[185,1589,1590,1592,1594,1596,1599,1601,1604,1606,1609,1611],{"class":187,"line":716},[185,1591,419],{"class":216},[185,1593,269],{"class":202},[185,1595,424],{"class":198},[185,1597,1598],{"class":427},"Deleted",[185,1600,424],{"class":198},[185,1602,1603],{"class":202},", deletedCount, ",[185,1605,424],{"class":198},[185,1607,1608],{"class":427},"expired records",[185,1610,424],{"class":198},[185,1612,282],{"class":202},[185,1614,1615],{"class":187,"line":745},[185,1616,359],{"class":265},[185,1618,1619],{"class":187,"line":766},[185,1620,282],{"class":202},[170,1622,1624],{"id":1623},"aggregation","Aggregation",[374,1626,1628],{"id":1627},"aggregateasync","AggregateAsync",[175,1630,1632],{"className":177,"code":1631,"language":179,"meta":180,"style":180},"collection:AggregateAsync({\n    {\n        [\"$group\"] = {\n            _id = \"$class\",\n            count = { [\"$sum\"] = 1 }\n        }\n    }\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",[182,1633,1634,1645,1650,1669,1687,1713,1718,1723,1741,1749,1764,1768,1772,1776,1792,1818,1822],{"__ignoreMap":180},[185,1635,1636,1638,1640,1642],{"class":187,"line":188},[185,1637,248],{"class":209},[185,1639,213],{"class":202},[185,1641,1628],{"class":216},[185,1643,1644],{"class":202},"({\n",[185,1646,1647],{"class":187,"line":195},[185,1648,1649],{"class":202},"    {\n",[185,1651,1652,1655,1657,1660,1662,1664,1666],{"class":187,"line":226},[185,1653,1654],{"class":202},"        [",[185,1656,424],{"class":198},[185,1658,1659],{"class":427},"$group",[185,1661,424],{"class":198},[185,1663,649],{"class":202},[185,1665,206],{"class":198},[185,1667,1668],{"class":202}," {\n",[185,1670,1671,1674,1676,1679,1682,1684],{"class":187,"line":290},[185,1672,1673],{"class":202},"            _id ",[185,1675,206],{"class":198},[185,1677,1678],{"class":198}," \"",[185,1680,1681],{"class":427},"$class",[185,1683,424],{"class":198},[185,1685,1686],{"class":202},",\n",[185,1688,1689,1692,1694,1696,1698,1701,1703,1705,1707,1710],{"class":187,"line":298},[185,1690,1691],{"class":202},"            count ",[185,1693,206],{"class":198},[185,1695,639],{"class":202},[185,1697,424],{"class":198},[185,1699,1700],{"class":427},"$sum",[185,1702,424],{"class":198},[185,1704,649],{"class":202},[185,1706,206],{"class":198},[185,1708,1709],{"class":654}," 1",[185,1711,1712],{"class":202}," }\n",[185,1714,1715],{"class":187,"line":356},[185,1716,1717],{"class":202},"        }\n",[185,1719,1720],{"class":187,"line":362},[185,1721,1722],{"class":202},"    }\n",[185,1724,1725,1728,1730,1732,1734,1736,1739],{"class":187,"line":716},[185,1726,1727],{"class":202},"}, ",[185,1729,266],{"class":265},[185,1731,269],{"class":198},[185,1733,273],{"class":272},[185,1735,276],{"class":198},[185,1737,1738],{"class":272}," results",[185,1740,282],{"class":198},[185,1742,1743,1745,1747],{"class":187,"line":745},[185,1744,332],{"class":265},[185,1746,335],{"class":202},[185,1748,338],{"class":265},[185,1750,1751,1753,1755,1757,1760,1762],{"class":187,"line":766},[185,1752,419],{"class":216},[185,1754,269],{"class":202},[185,1756,424],{"class":198},[185,1758,1759],{"class":427},"Aggregation error:",[185,1761,424],{"class":198},[185,1763,433],{"class":202},[185,1765,1766],{"class":187,"line":788},[185,1767,438],{"class":265},[185,1769,1770],{"class":187,"line":793},[185,1771,359],{"class":265},[185,1773,1774],{"class":187,"line":800},[185,1775,713],{"emptyLinePlaceholder":712},[185,1777,1778,1780,1783,1785,1787,1790],{"class":187,"line":805},[185,1779,748],{"class":265},[185,1781,1782],{"class":202}," _, result ",[185,1784,754],{"class":265},[185,1786,757],{"class":216},[185,1788,1789],{"class":202},"(results) ",[185,1791,763],{"class":265},[185,1793,1794,1796,1799,1802,1804,1806,1808,1810,1813,1816],{"class":187,"line":811},[185,1795,419],{"class":216},[185,1797,1798],{"class":202},"(result.",[185,1800,1801],{"class":209},"_id",[185,1803,262],{"class":202},[185,1805,424],{"class":198},[185,1807,213],{"class":427},[185,1809,424],{"class":198},[185,1811,1812],{"class":202},", result.",[185,1814,1815],{"class":209},"count",[185,1817,282],{"class":202},[185,1819,1820],{"class":187,"line":839},[185,1821,359],{"class":265},[185,1823,1824,1826],{"class":187,"line":848},[185,1825,293],{"class":265},[185,1827,282],{"class":202},[165,1829,1831],{"id":1830},"practical-examples","Practical Examples",[170,1833,1835],{"id":1834},"async-player-loading","Async Player Loading",[175,1837,1839],{"className":177,"code":1838,"language":179,"meta":180,"style":180},"function LoadPlayerAsync(steamid, callback)\n    local players = db:Collection(\"players\")\n\n    players:FindOneAsync({ steamid = steamid }, function(err, player)\n        if err then\n            callback(nil, err)\n            return\n        end\n\n        if player then\n            -- Player exists, update login time\n            players:UpdateOneAsync(\n                { steamid = steamid },\n                { [\"$set\"] = { last_login = os.time() } },\n                function() end  -- Fire and forget\n            )\n            callback(player, nil)\n        else\n            -- New player, create record\n            local newPlayer = {\n                steamid = steamid,\n                level = 1,\n                credits = 1000,\n                created_at = os.time()\n            }\n            players:InsertOneAsync(newPlayer, function(err, id)\n                if err then\n                    callback(nil, err)\n                else\n                    newPlayer._id = id\n                    callback(newPlayer, nil)\n                end\n            end)\n        end\n    end)\nend\n\n-- Usage in GMod\nhook.Add(\"PlayerInitialSpawn\", \"LoadPlayerData\", function(ply)\n    local steamid = ply:SteamID()\n\n    LoadPlayerAsync(steamid, function(player, err)\n        if err then\n            print(\"Failed to load player:\", err)\n            return\n        end\n\n        -- Store data on player entity\n        ply.dbData = player\n        ply:SetNWInt(\"Level\", player.level)\n        ply:SetNWInt(\"Credits\", player.credits)\n\n        print(\"Loaded data for\", ply:Nick())\n    end)\nend)\n",[182,1840,1841,1860,1889,1893,1921,1929,1940,1944,1948,1952,1961,1966,1977,1986,2013,2027,2032,2043,2048,2053,2065,2075,2086,2099,2112,2118,2143,2153,2165,2171,2185,2196,2202,2210,2215,2223,2228,2233,2239,2277,2297,2302,2325,2334,2350,2355,2360,2365,2371,2385,2413,2438,2443,2469,2476],{"__ignoreMap":180},[185,1842,1843,1845,1848,1850,1853,1855,1858],{"class":187,"line":188},[185,1844,266],{"class":265},[185,1846,1847],{"class":216}," LoadPlayerAsync",[185,1849,269],{"class":198},[185,1851,1852],{"class":272},"steamid",[185,1854,276],{"class":198},[185,1856,1857],{"class":272}," callback",[185,1859,282],{"class":198},[185,1861,1862,1865,1868,1870,1873,1875,1878,1880,1882,1885,1887],{"class":187,"line":195},[185,1863,1864],{"class":198},"    local",[185,1866,1867],{"class":202}," players ",[185,1869,206],{"class":198},[185,1871,1872],{"class":209}," db",[185,1874,213],{"class":202},[185,1876,1877],{"class":216},"Collection",[185,1879,269],{"class":202},[185,1881,424],{"class":198},[185,1883,1884],{"class":427},"players",[185,1886,424],{"class":198},[185,1888,282],{"class":202},[185,1890,1891],{"class":187,"line":226},[185,1892,713],{"emptyLinePlaceholder":712},[185,1894,1895,1898,1900,1902,1904,1906,1908,1910,1912,1914,1916,1919],{"class":187,"line":290},[185,1896,1897],{"class":209},"    players",[185,1899,213],{"class":202},[185,1901,907],{"class":216},[185,1903,923],{"class":202},[185,1905,206],{"class":198},[185,1907,928],{"class":202},[185,1909,266],{"class":265},[185,1911,269],{"class":198},[185,1913,273],{"class":272},[185,1915,276],{"class":198},[185,1917,1918],{"class":272}," player",[185,1920,282],{"class":198},[185,1922,1923,1925,1927],{"class":187,"line":298},[185,1924,1208],{"class":265},[185,1926,335],{"class":202},[185,1928,338],{"class":265},[185,1930,1931,1934,1936,1938],{"class":187,"line":356},[185,1932,1933],{"class":216},"            callback",[185,1935,269],{"class":202},[185,1937,259],{"class":198},[185,1939,433],{"class":202},[185,1941,1942],{"class":187,"line":362},[185,1943,1233],{"class":265},[185,1945,1946],{"class":187,"line":716},[185,1947,1238],{"class":265},[185,1949,1950],{"class":187,"line":745},[185,1951,713],{"emptyLinePlaceholder":712},[185,1953,1954,1956,1959],{"class":187,"line":766},[185,1955,1208],{"class":265},[185,1957,1958],{"class":202}," player ",[185,1960,338],{"class":265},[185,1962,1963],{"class":187,"line":788},[185,1964,1965],{"class":191},"            -- Player exists, update login time\n",[185,1967,1968,1971,1973,1975],{"class":187,"line":793},[185,1969,1970],{"class":209},"            players",[185,1972,213],{"class":202},[185,1974,1134],{"class":216},[185,1976,1150],{"class":202},[185,1978,1979,1982,1984],{"class":187,"line":800},[185,1980,1981],{"class":202},"                { steamid ",[185,1983,206],{"class":198},[185,1985,1160],{"class":202},[185,1987,1988,1991,1993,1996,1998,2000,2002,2005,2007,2010],{"class":187,"line":805},[185,1989,1990],{"class":202},"                { [",[185,1992,424],{"class":198},[185,1994,1995],{"class":427},"$set",[185,1997,424],{"class":198},[185,1999,649],{"class":202},[185,2001,206],{"class":198},[185,2003,2004],{"class":202}," { last_login ",[185,2006,206],{"class":198},[185,2008,2009],{"class":216}," os.time",[185,2011,2012],{"class":202},"() } },\n",[185,2014,2015,2018,2021,2024],{"class":187,"line":811},[185,2016,2017],{"class":265},"                function",[185,2019,2020],{"class":198},"()",[185,2022,2023],{"class":265}," end",[185,2025,2026],{"class":191},"  -- Fire and forget\n",[185,2028,2029],{"class":187,"line":839},[185,2030,2031],{"class":202},"            )\n",[185,2033,2034,2036,2039,2041],{"class":187,"line":848},[185,2035,1933],{"class":216},[185,2037,2038],{"class":202},"(player, ",[185,2040,259],{"class":198},[185,2042,282],{"class":202},[185,2044,2045],{"class":187,"line":863},[185,2046,2047],{"class":265},"        else\n",[185,2049,2050],{"class":187,"line":868},[185,2051,2052],{"class":191},"            -- New player, create record\n",[185,2054,2055,2058,2061,2063],{"class":187,"line":873},[185,2056,2057],{"class":198},"            local",[185,2059,2060],{"class":202}," newPlayer ",[185,2062,206],{"class":198},[185,2064,1668],{"class":202},[185,2066,2067,2070,2072],{"class":187,"line":878},[185,2068,2069],{"class":202},"                steamid ",[185,2071,206],{"class":198},[185,2073,2074],{"class":202}," steamid,\n",[185,2076,2077,2080,2082,2084],{"class":187,"line":899},[185,2078,2079],{"class":202},"                level ",[185,2081,206],{"class":198},[185,2083,1709],{"class":654},[185,2085,1686],{"class":202},[185,2087,2089,2092,2094,2097],{"class":187,"line":2088},23,[185,2090,2091],{"class":202},"                credits ",[185,2093,206],{"class":198},[185,2095,2096],{"class":654}," 1000",[185,2098,1686],{"class":202},[185,2100,2102,2105,2107,2109],{"class":187,"line":2101},24,[185,2103,2104],{"class":202},"                created_at ",[185,2106,206],{"class":198},[185,2108,2009],{"class":216},[185,2110,2111],{"class":202},"()\n",[185,2113,2115],{"class":187,"line":2114},25,[185,2116,2117],{"class":202},"            }\n",[185,2119,2121,2123,2125,2127,2130,2132,2134,2136,2138,2141],{"class":187,"line":2120},26,[185,2122,1970],{"class":209},[185,2124,213],{"class":202},[185,2126,377],{"class":216},[185,2128,2129],{"class":202},"(newPlayer, ",[185,2131,266],{"class":265},[185,2133,269],{"class":198},[185,2135,273],{"class":272},[185,2137,276],{"class":198},[185,2139,2140],{"class":272}," id",[185,2142,282],{"class":198},[185,2144,2146,2149,2151],{"class":187,"line":2145},27,[185,2147,2148],{"class":265},"                if",[185,2150,335],{"class":202},[185,2152,338],{"class":265},[185,2154,2156,2159,2161,2163],{"class":187,"line":2155},28,[185,2157,2158],{"class":216},"                    callback",[185,2160,269],{"class":202},[185,2162,259],{"class":198},[185,2164,433],{"class":202},[185,2166,2168],{"class":187,"line":2167},29,[185,2169,2170],{"class":265},"                else\n",[185,2172,2174,2177,2179,2182],{"class":187,"line":2173},30,[185,2175,2176],{"class":202},"                    newPlayer.",[185,2178,1801],{"class":209},[185,2180,2181],{"class":198}," =",[185,2183,2184],{"class":202}," id\n",[185,2186,2188,2190,2192,2194],{"class":187,"line":2187},31,[185,2189,2158],{"class":216},[185,2191,2129],{"class":202},[185,2193,259],{"class":198},[185,2195,282],{"class":202},[185,2197,2199],{"class":187,"line":2198},32,[185,2200,2201],{"class":265},"                end\n",[185,2203,2205,2208],{"class":187,"line":2204},33,[185,2206,2207],{"class":265},"            end",[185,2209,282],{"class":202},[185,2211,2213],{"class":187,"line":2212},34,[185,2214,1238],{"class":265},[185,2216,2218,2221],{"class":187,"line":2217},35,[185,2219,2220],{"class":265},"    end",[185,2222,282],{"class":202},[185,2224,2226],{"class":187,"line":2225},36,[185,2227,365],{"class":265},[185,2229,2231],{"class":187,"line":2230},37,[185,2232,713],{"emptyLinePlaceholder":712},[185,2234,2236],{"class":187,"line":2235},38,[185,2237,2238],{"class":191},"-- Usage in GMod\n",[185,2240,2242,2245,2248,2250,2252,2255,2257,2259,2261,2264,2266,2268,2270,2272,2275],{"class":187,"line":2241},39,[185,2243,2244],{"class":202},"hook.",[185,2246,2247],{"class":216},"Add",[185,2249,269],{"class":202},[185,2251,424],{"class":198},[185,2253,2254],{"class":427},"PlayerInitialSpawn",[185,2256,424],{"class":198},[185,2258,262],{"class":202},[185,2260,424],{"class":198},[185,2262,2263],{"class":427},"LoadPlayerData",[185,2265,424],{"class":198},[185,2267,262],{"class":202},[185,2269,266],{"class":265},[185,2271,269],{"class":198},[185,2273,2274],{"class":272},"ply",[185,2276,282],{"class":198},[185,2278,2280,2282,2285,2287,2290,2292,2295],{"class":187,"line":2279},40,[185,2281,1864],{"class":198},[185,2283,2284],{"class":202}," steamid ",[185,2286,206],{"class":198},[185,2288,2289],{"class":209}," ply",[185,2291,213],{"class":202},[185,2293,2294],{"class":216},"SteamID",[185,2296,2111],{"class":202},[185,2298,2300],{"class":187,"line":2299},41,[185,2301,713],{"emptyLinePlaceholder":712},[185,2303,2305,2308,2311,2313,2315,2318,2320,2323],{"class":187,"line":2304},42,[185,2306,2307],{"class":216},"    LoadPlayerAsync",[185,2309,2310],{"class":202},"(steamid, ",[185,2312,266],{"class":265},[185,2314,269],{"class":198},[185,2316,2317],{"class":272},"player",[185,2319,276],{"class":198},[185,2321,2322],{"class":272}," err",[185,2324,282],{"class":198},[185,2326,2328,2330,2332],{"class":187,"line":2327},43,[185,2329,1208],{"class":265},[185,2331,335],{"class":202},[185,2333,338],{"class":265},[185,2335,2337,2339,2341,2343,2346,2348],{"class":187,"line":2336},44,[185,2338,1217],{"class":216},[185,2340,269],{"class":202},[185,2342,424],{"class":198},[185,2344,2345],{"class":427},"Failed to load player:",[185,2347,424],{"class":198},[185,2349,433],{"class":202},[185,2351,2353],{"class":187,"line":2352},45,[185,2354,1233],{"class":265},[185,2356,2358],{"class":187,"line":2357},46,[185,2359,1238],{"class":265},[185,2361,2363],{"class":187,"line":2362},47,[185,2364,713],{"emptyLinePlaceholder":712},[185,2366,2368],{"class":187,"line":2367},48,[185,2369,2370],{"class":191},"        -- Store data on player entity\n",[185,2372,2374,2377,2380,2382],{"class":187,"line":2373},49,[185,2375,2376],{"class":202},"        ply.",[185,2378,2379],{"class":209},"dbData",[185,2381,2181],{"class":198},[185,2383,2384],{"class":202}," player\n",[185,2386,2388,2391,2393,2396,2398,2400,2403,2405,2408,2411],{"class":187,"line":2387},50,[185,2389,2390],{"class":209},"        ply",[185,2392,213],{"class":202},[185,2394,2395],{"class":216},"SetNWInt",[185,2397,269],{"class":202},[185,2399,424],{"class":198},[185,2401,2402],{"class":427},"Level",[185,2404,424],{"class":198},[185,2406,2407],{"class":202},", player.",[185,2409,2410],{"class":209},"level",[185,2412,282],{"class":202},[185,2414,2416,2418,2420,2422,2424,2426,2429,2431,2433,2436],{"class":187,"line":2415},51,[185,2417,2390],{"class":209},[185,2419,213],{"class":202},[185,2421,2395],{"class":216},[185,2423,269],{"class":202},[185,2425,424],{"class":198},[185,2427,2428],{"class":427},"Credits",[185,2430,424],{"class":198},[185,2432,2407],{"class":202},[185,2434,2435],{"class":209},"credits",[185,2437,282],{"class":202},[185,2439,2441],{"class":187,"line":2440},52,[185,2442,713],{"emptyLinePlaceholder":712},[185,2444,2446,2448,2450,2452,2455,2457,2459,2461,2463,2466],{"class":187,"line":2445},53,[185,2447,419],{"class":216},[185,2449,269],{"class":202},[185,2451,424],{"class":198},[185,2453,2454],{"class":427},"Loaded data for",[185,2456,424],{"class":198},[185,2458,262],{"class":202},[185,2460,2274],{"class":209},[185,2462,213],{"class":202},[185,2464,2465],{"class":216},"Nick",[185,2467,2468],{"class":202},"())\n",[185,2470,2472,2474],{"class":187,"line":2471},54,[185,2473,2220],{"class":265},[185,2475,282],{"class":202},[185,2477,2479,2481],{"class":187,"line":2478},55,[185,2480,293],{"class":265},[185,2482,282],{"class":202},[170,2484,2486],{"id":2485},"async-save-system","Async Save System",[175,2488,2490],{"className":177,"code":2489,"language":179,"meta":180,"style":180},"function SavePlayerAsync(steamid, data, callback)\n    local players = db:Collection(\"players\")\n\n    players:UpdateOneAsync(\n        { steamid = steamid },\n        { [\"$set\"] = data },\n        function(err, modified)\n            if callback then\n                callback(err, modified > 0)\n            end\n        end\n    )\nend\n\n-- Auto-save every 5 minutes\ntimer.Create(\"AutoSave\", 300, 0, function()\n    for _, ply in ipairs(player.GetAll()) do\n        if ply.dbData then\n            SavePlayerAsync(ply:SteamID(), {\n                credits = ply.dbData.credits,\n                level = ply.dbData.level,\n                playtime = ply.dbData.playtime + 300\n            })\n        end\n    end\n    print(\"Auto-save complete\")\nend)\n",[182,2491,2492,2514,2538,2542,2552,2561,2579,2595,2605,2619,2624,2628,2633,2637,2641,2646,2678,2700,2711,2727,2744,2760,2782,2787,2791,2795,2810],{"__ignoreMap":180},[185,2493,2494,2496,2499,2501,2503,2505,2508,2510,2512],{"class":187,"line":188},[185,2495,266],{"class":265},[185,2497,2498],{"class":216}," SavePlayerAsync",[185,2500,269],{"class":198},[185,2502,1852],{"class":272},[185,2504,276],{"class":198},[185,2506,2507],{"class":272}," data",[185,2509,276],{"class":198},[185,2511,1857],{"class":272},[185,2513,282],{"class":198},[185,2515,2516,2518,2520,2522,2524,2526,2528,2530,2532,2534,2536],{"class":187,"line":195},[185,2517,1864],{"class":198},[185,2519,1867],{"class":202},[185,2521,206],{"class":198},[185,2523,1872],{"class":209},[185,2525,213],{"class":202},[185,2527,1877],{"class":216},[185,2529,269],{"class":202},[185,2531,424],{"class":198},[185,2533,1884],{"class":427},[185,2535,424],{"class":198},[185,2537,282],{"class":202},[185,2539,2540],{"class":187,"line":226},[185,2541,713],{"emptyLinePlaceholder":712},[185,2543,2544,2546,2548,2550],{"class":187,"line":290},[185,2545,1897],{"class":209},[185,2547,213],{"class":202},[185,2549,1134],{"class":216},[185,2551,1150],{"class":202},[185,2553,2554,2557,2559],{"class":187,"line":298},[185,2555,2556],{"class":202},"        { steamid ",[185,2558,206],{"class":198},[185,2560,1160],{"class":202},[185,2562,2563,2566,2568,2570,2572,2574,2576],{"class":187,"line":356},[185,2564,2565],{"class":202},"        { [",[185,2567,424],{"class":198},[185,2569,1995],{"class":427},[185,2571,424],{"class":198},[185,2573,649],{"class":202},[185,2575,206],{"class":198},[185,2577,2578],{"class":202}," data },\n",[185,2580,2581,2584,2586,2588,2590,2593],{"class":187,"line":362},[185,2582,2583],{"class":265},"        function",[185,2585,269],{"class":198},[185,2587,273],{"class":272},[185,2589,276],{"class":198},[185,2591,2592],{"class":272}," modified",[185,2594,282],{"class":198},[185,2596,2597,2600,2603],{"class":187,"line":716},[185,2598,2599],{"class":265},"            if",[185,2601,2602],{"class":202}," callback ",[185,2604,338],{"class":265},[185,2606,2607,2610,2613,2615,2617],{"class":187,"line":745},[185,2608,2609],{"class":216},"                callback",[185,2611,2612],{"class":202},"(err, modified ",[185,2614,1480],{"class":198},[185,2616,1483],{"class":654},[185,2618,282],{"class":202},[185,2620,2621],{"class":187,"line":766},[185,2622,2623],{"class":265},"            end\n",[185,2625,2626],{"class":187,"line":788},[185,2627,1238],{"class":265},[185,2629,2630],{"class":187,"line":793},[185,2631,2632],{"class":202},"    )\n",[185,2634,2635],{"class":187,"line":800},[185,2636,365],{"class":265},[185,2638,2639],{"class":187,"line":805},[185,2640,713],{"emptyLinePlaceholder":712},[185,2642,2643],{"class":187,"line":811},[185,2644,2645],{"class":191},"-- Auto-save every 5 minutes\n",[185,2647,2648,2651,2654,2656,2658,2661,2663,2665,2668,2670,2672,2674,2676],{"class":187,"line":839},[185,2649,2650],{"class":202},"timer.",[185,2652,2653],{"class":216},"Create",[185,2655,269],{"class":202},[185,2657,424],{"class":198},[185,2659,2660],{"class":427},"AutoSave",[185,2662,424],{"class":198},[185,2664,262],{"class":202},[185,2666,2667],{"class":654},"300",[185,2669,262],{"class":202},[185,2671,609],{"class":654},[185,2673,262],{"class":202},[185,2675,266],{"class":265},[185,2677,2111],{"class":198},[185,2679,2680,2682,2685,2687,2689,2692,2695,2698],{"class":187,"line":848},[185,2681,748],{"class":265},[185,2683,2684],{"class":202}," _, ply ",[185,2686,754],{"class":265},[185,2688,757],{"class":216},[185,2690,2691],{"class":202},"(player.",[185,2693,2694],{"class":216},"GetAll",[185,2696,2697],{"class":202},"()) ",[185,2699,763],{"class":265},[185,2701,2702,2704,2707,2709],{"class":187,"line":863},[185,2703,1208],{"class":265},[185,2705,2706],{"class":202}," ply.",[185,2708,2379],{"class":209},[185,2710,1486],{"class":265},[185,2712,2713,2716,2718,2720,2722,2724],{"class":187,"line":868},[185,2714,2715],{"class":216},"            SavePlayerAsync",[185,2717,269],{"class":202},[185,2719,2274],{"class":209},[185,2721,213],{"class":202},[185,2723,2294],{"class":216},[185,2725,2726],{"class":202},"(), {\n",[185,2728,2729,2731,2733,2735,2737,2740,2742],{"class":187,"line":873},[185,2730,2091],{"class":202},[185,2732,206],{"class":198},[185,2734,2706],{"class":202},[185,2736,2379],{"class":209},[185,2738,2739],{"class":202},".",[185,2741,2435],{"class":209},[185,2743,1686],{"class":202},[185,2745,2746,2748,2750,2752,2754,2756,2758],{"class":187,"line":878},[185,2747,2079],{"class":202},[185,2749,206],{"class":198},[185,2751,2706],{"class":202},[185,2753,2379],{"class":209},[185,2755,2739],{"class":202},[185,2757,2410],{"class":209},[185,2759,1686],{"class":202},[185,2761,2762,2765,2767,2769,2771,2773,2776,2779],{"class":187,"line":899},[185,2763,2764],{"class":202},"                playtime ",[185,2766,206],{"class":198},[185,2768,2706],{"class":202},[185,2770,2379],{"class":209},[185,2772,2739],{"class":202},[185,2774,2775],{"class":209},"playtime",[185,2777,2778],{"class":198}," +",[185,2780,2781],{"class":654}," 300\n",[185,2783,2784],{"class":187,"line":2088},[185,2785,2786],{"class":202},"            })\n",[185,2788,2789],{"class":187,"line":2101},[185,2790,1238],{"class":265},[185,2792,2793],{"class":187,"line":2114},[185,2794,359],{"class":265},[185,2796,2797,2799,2801,2803,2806,2808],{"class":187,"line":2120},[185,2798,447],{"class":216},[185,2800,269],{"class":202},[185,2802,424],{"class":198},[185,2804,2805],{"class":427},"Auto-save complete",[185,2807,424],{"class":198},[185,2809,282],{"class":202},[185,2811,2812,2814],{"class":187,"line":2145},[185,2813,293],{"class":265},[185,2815,282],{"class":202},[170,2817,2819],{"id":2818},"async-leaderboard","Async Leaderboard",[175,2821,2823],{"className":177,"code":2822,"language":179,"meta":180,"style":180},"function GetLeaderboardAsync(callback)\n    local players = db:Collection(\"players\")\n\n    players:AggregateAsync({\n        { [\"$match\"] = { banned = { [\"$ne\"] = true } } },\n        { [\"$sort\"] = { score = -1 } },\n        { [\"$limit\"] = 10 },\n        { [\"$project\"] = {\n            username = 1,\n            score = 1,\n            level = 1,\n            _id = 0\n        }}\n    }, function(err, results)\n        if err then\n            callback(nil, err)\n        else\n            callback(results, nil)\n        end\n    end)\nend\n\n-- Usage\nGetLeaderboardAsync(function(leaderboard, err)\n    if err then\n        print(\"Failed to get leaderboard:\", err)\n        return\n    end\n\n    print(\"=== Top 10 Players ===\")\n    for i, entry in ipairs(leaderboard) do\n        print(string.format(\"%d. %s - %d points\",\n            i, entry.username, entry.score))\n    end\nend)\n",[182,2824,2825,2839,2863,2867,2877,2915,2943,2962,2979,2990,3001,3012,3021,3026,3043,3051,3061,3065,3076,3080,3086,3090,3094,3099,3119,3127,3142,3146,3150,3154,3169,3185,3205,3221,3225],{"__ignoreMap":180},[185,2826,2827,2829,2832,2834,2837],{"class":187,"line":188},[185,2828,266],{"class":265},[185,2830,2831],{"class":216}," GetLeaderboardAsync",[185,2833,269],{"class":198},[185,2835,2836],{"class":272},"callback",[185,2838,282],{"class":198},[185,2840,2841,2843,2845,2847,2849,2851,2853,2855,2857,2859,2861],{"class":187,"line":195},[185,2842,1864],{"class":198},[185,2844,1867],{"class":202},[185,2846,206],{"class":198},[185,2848,1872],{"class":209},[185,2850,213],{"class":202},[185,2852,1877],{"class":216},[185,2854,269],{"class":202},[185,2856,424],{"class":198},[185,2858,1884],{"class":427},[185,2860,424],{"class":198},[185,2862,282],{"class":202},[185,2864,2865],{"class":187,"line":226},[185,2866,713],{"emptyLinePlaceholder":712},[185,2868,2869,2871,2873,2875],{"class":187,"line":290},[185,2870,1897],{"class":209},[185,2872,213],{"class":202},[185,2874,1628],{"class":216},[185,2876,1644],{"class":202},[185,2878,2879,2881,2883,2886,2888,2890,2892,2895,2897,2899,2901,2904,2906,2908,2910,2912],{"class":187,"line":298},[185,2880,2565],{"class":202},[185,2882,424],{"class":198},[185,2884,2885],{"class":427},"$match",[185,2887,424],{"class":198},[185,2889,649],{"class":202},[185,2891,206],{"class":198},[185,2893,2894],{"class":202}," { banned ",[185,2896,206],{"class":198},[185,2898,639],{"class":202},[185,2900,424],{"class":198},[185,2902,2903],{"class":427},"$ne",[185,2905,424],{"class":198},[185,2907,649],{"class":202},[185,2909,206],{"class":198},[185,2911,1058],{"class":198},[185,2913,2914],{"class":202}," } } },\n",[185,2916,2917,2919,2921,2924,2926,2928,2930,2933,2935,2938,2941],{"class":187,"line":356},[185,2918,2565],{"class":202},[185,2920,424],{"class":198},[185,2922,2923],{"class":427},"$sort",[185,2925,424],{"class":198},[185,2927,649],{"class":202},[185,2929,206],{"class":198},[185,2931,2932],{"class":202}," { score ",[185,2934,206],{"class":198},[185,2936,2937],{"class":198}," -",[185,2939,2940],{"class":654},"1",[185,2942,1187],{"class":202},[185,2944,2945,2947,2949,2952,2954,2956,2958,2960],{"class":187,"line":362},[185,2946,2565],{"class":202},[185,2948,424],{"class":198},[185,2950,2951],{"class":427},"$limit",[185,2953,424],{"class":198},[185,2955,649],{"class":202},[185,2957,206],{"class":198},[185,2959,655],{"class":654},[185,2961,1293],{"class":202},[185,2963,2964,2966,2968,2971,2973,2975,2977],{"class":187,"line":716},[185,2965,2565],{"class":202},[185,2967,424],{"class":198},[185,2969,2970],{"class":427},"$project",[185,2972,424],{"class":198},[185,2974,649],{"class":202},[185,2976,206],{"class":198},[185,2978,1668],{"class":202},[185,2980,2981,2984,2986,2988],{"class":187,"line":745},[185,2982,2983],{"class":202},"            username ",[185,2985,206],{"class":198},[185,2987,1709],{"class":654},[185,2989,1686],{"class":202},[185,2991,2992,2995,2997,2999],{"class":187,"line":766},[185,2993,2994],{"class":202},"            score ",[185,2996,206],{"class":198},[185,2998,1709],{"class":654},[185,3000,1686],{"class":202},[185,3002,3003,3006,3008,3010],{"class":187,"line":788},[185,3004,3005],{"class":202},"            level ",[185,3007,206],{"class":198},[185,3009,1709],{"class":654},[185,3011,1686],{"class":202},[185,3013,3014,3016,3018],{"class":187,"line":793},[185,3015,1673],{"class":202},[185,3017,206],{"class":198},[185,3019,3020],{"class":654}," 0\n",[185,3022,3023],{"class":187,"line":800},[185,3024,3025],{"class":202},"        }}\n",[185,3027,3028,3031,3033,3035,3037,3039,3041],{"class":187,"line":805},[185,3029,3030],{"class":202},"    }, ",[185,3032,266],{"class":265},[185,3034,269],{"class":198},[185,3036,273],{"class":272},[185,3038,276],{"class":198},[185,3040,1738],{"class":272},[185,3042,282],{"class":198},[185,3044,3045,3047,3049],{"class":187,"line":811},[185,3046,1208],{"class":265},[185,3048,335],{"class":202},[185,3050,338],{"class":265},[185,3052,3053,3055,3057,3059],{"class":187,"line":839},[185,3054,1933],{"class":216},[185,3056,269],{"class":202},[185,3058,259],{"class":198},[185,3060,433],{"class":202},[185,3062,3063],{"class":187,"line":848},[185,3064,2047],{"class":265},[185,3066,3067,3069,3072,3074],{"class":187,"line":863},[185,3068,1933],{"class":216},[185,3070,3071],{"class":202},"(results, ",[185,3073,259],{"class":198},[185,3075,282],{"class":202},[185,3077,3078],{"class":187,"line":868},[185,3079,1238],{"class":265},[185,3081,3082,3084],{"class":187,"line":873},[185,3083,2220],{"class":265},[185,3085,282],{"class":202},[185,3087,3088],{"class":187,"line":878},[185,3089,365],{"class":265},[185,3091,3092],{"class":187,"line":899},[185,3093,713],{"emptyLinePlaceholder":712},[185,3095,3096],{"class":187,"line":2088},[185,3097,3098],{"class":191},"-- Usage\n",[185,3100,3101,3104,3106,3108,3110,3113,3115,3117],{"class":187,"line":2101},[185,3102,3103],{"class":216},"GetLeaderboardAsync",[185,3105,269],{"class":202},[185,3107,266],{"class":265},[185,3109,269],{"class":198},[185,3111,3112],{"class":272},"leaderboard",[185,3114,276],{"class":198},[185,3116,2322],{"class":272},[185,3118,282],{"class":198},[185,3120,3121,3123,3125],{"class":187,"line":2114},[185,3122,332],{"class":265},[185,3124,335],{"class":202},[185,3126,338],{"class":265},[185,3128,3129,3131,3133,3135,3138,3140],{"class":187,"line":2120},[185,3130,419],{"class":216},[185,3132,269],{"class":202},[185,3134,424],{"class":198},[185,3136,3137],{"class":427},"Failed to get leaderboard:",[185,3139,424],{"class":198},[185,3141,433],{"class":202},[185,3143,3144],{"class":187,"line":2145},[185,3145,438],{"class":265},[185,3147,3148],{"class":187,"line":2155},[185,3149,359],{"class":265},[185,3151,3152],{"class":187,"line":2167},[185,3153,713],{"emptyLinePlaceholder":712},[185,3155,3156,3158,3160,3162,3165,3167],{"class":187,"line":2173},[185,3157,447],{"class":216},[185,3159,269],{"class":202},[185,3161,424],{"class":198},[185,3163,3164],{"class":427},"=== Top 10 Players ===",[185,3166,424],{"class":198},[185,3168,282],{"class":202},[185,3170,3171,3173,3176,3178,3180,3183],{"class":187,"line":2187},[185,3172,748],{"class":265},[185,3174,3175],{"class":202}," i, entry ",[185,3177,754],{"class":265},[185,3179,757],{"class":216},[185,3181,3182],{"class":202},"(leaderboard) ",[185,3184,763],{"class":265},[185,3186,3187,3189,3191,3194,3196,3198,3201,3203],{"class":187,"line":2198},[185,3188,419],{"class":216},[185,3190,269],{"class":202},[185,3192,3193],{"class":216},"string.format",[185,3195,269],{"class":202},[185,3197,424],{"class":198},[185,3199,3200],{"class":427},"%d. %s - %d points",[185,3202,424],{"class":198},[185,3204,1686],{"class":202},[185,3206,3207,3210,3212,3215,3218],{"class":187,"line":2204},[185,3208,3209],{"class":202},"            i, entry.",[185,3211,783],{"class":209},[185,3213,3214],{"class":202},", entry.",[185,3216,3217],{"class":209},"score",[185,3219,3220],{"class":202},"))\n",[185,3222,3223],{"class":187,"line":2212},[185,3224,359],{"class":265},[185,3226,3227,3229],{"class":187,"line":2217},[185,3228,293],{"class":265},[185,3230,282],{"class":202},[170,3232,3234],{"id":3233},"fire-and-forget-logging","Fire-and-Forget Logging",[175,3236,3238],{"className":177,"code":3237,"language":179,"meta":180,"style":180},"function LogEventAsync(category, message, data)\n    local logs = db:Collection(\"logs\")\n\n    logs:InsertOneAsync({\n        category = category,\n        message = message,\n        data = data or {},\n        timestamp = os.time()\n    }, function(err)\n        -- Optional: log failures to console\n        if err then\n            print(\"[LOG ERROR]\", err)\n        end\n    end)\nend\n\n-- Usage - doesn't block game\nLogEventAsync(\"player\", \"Player connected\", { steamid = \"STEAM_0:1:12345\" })\nLogEventAsync(\"economy\", \"Purchase made\", { item = \"weapon\", cost = 500 })\nLogEventAsync(\"combat\", \"Player killed\", { killer = \"A\", victim = \"B\" })\n",[182,3239,3240,3263,3289,3293,3304,3314,3324,3340,3351,3363,3368,3376,3391,3395,3401,3405,3409,3414,3452,3497],{"__ignoreMap":180},[185,3241,3242,3244,3247,3249,3252,3254,3257,3259,3261],{"class":187,"line":188},[185,3243,266],{"class":265},[185,3245,3246],{"class":216}," LogEventAsync",[185,3248,269],{"class":198},[185,3250,3251],{"class":272},"category",[185,3253,276],{"class":198},[185,3255,3256],{"class":272}," message",[185,3258,276],{"class":198},[185,3260,2507],{"class":272},[185,3262,282],{"class":198},[185,3264,3265,3267,3270,3272,3274,3276,3278,3280,3282,3285,3287],{"class":187,"line":195},[185,3266,1864],{"class":198},[185,3268,3269],{"class":202}," logs ",[185,3271,206],{"class":198},[185,3273,1872],{"class":209},[185,3275,213],{"class":202},[185,3277,1877],{"class":216},[185,3279,269],{"class":202},[185,3281,424],{"class":198},[185,3283,3284],{"class":427},"logs",[185,3286,424],{"class":198},[185,3288,282],{"class":202},[185,3290,3291],{"class":187,"line":226},[185,3292,713],{"emptyLinePlaceholder":712},[185,3294,3295,3298,3300,3302],{"class":187,"line":290},[185,3296,3297],{"class":209},"    logs",[185,3299,213],{"class":202},[185,3301,377],{"class":216},[185,3303,1644],{"class":202},[185,3305,3306,3309,3311],{"class":187,"line":298},[185,3307,3308],{"class":202},"        category ",[185,3310,206],{"class":198},[185,3312,3313],{"class":202}," category,\n",[185,3315,3316,3319,3321],{"class":187,"line":356},[185,3317,3318],{"class":202},"        message ",[185,3320,206],{"class":198},[185,3322,3323],{"class":202}," message,\n",[185,3325,3326,3329,3331,3334,3337],{"class":187,"line":362},[185,3327,3328],{"class":202},"        data ",[185,3330,206],{"class":198},[185,3332,3333],{"class":202}," data ",[185,3335,3336],{"class":198},"or",[185,3338,3339],{"class":202}," {},\n",[185,3341,3342,3345,3347,3349],{"class":187,"line":716},[185,3343,3344],{"class":202},"        timestamp ",[185,3346,206],{"class":198},[185,3348,2009],{"class":216},[185,3350,2111],{"class":202},[185,3352,3353,3355,3357,3359,3361],{"class":187,"line":745},[185,3354,3030],{"class":202},[185,3356,266],{"class":265},[185,3358,269],{"class":198},[185,3360,273],{"class":272},[185,3362,282],{"class":198},[185,3364,3365],{"class":187,"line":766},[185,3366,3367],{"class":191},"        -- Optional: log failures to console\n",[185,3369,3370,3372,3374],{"class":187,"line":788},[185,3371,1208],{"class":265},[185,3373,335],{"class":202},[185,3375,338],{"class":265},[185,3377,3378,3380,3382,3384,3387,3389],{"class":187,"line":793},[185,3379,1217],{"class":216},[185,3381,269],{"class":202},[185,3383,424],{"class":198},[185,3385,3386],{"class":427},"[LOG ERROR]",[185,3388,424],{"class":198},[185,3390,433],{"class":202},[185,3392,3393],{"class":187,"line":800},[185,3394,1238],{"class":265},[185,3396,3397,3399],{"class":187,"line":805},[185,3398,2220],{"class":265},[185,3400,282],{"class":202},[185,3402,3403],{"class":187,"line":811},[185,3404,365],{"class":265},[185,3406,3407],{"class":187,"line":839},[185,3408,713],{"emptyLinePlaceholder":712},[185,3410,3411],{"class":187,"line":848},[185,3412,3413],{"class":191},"-- Usage - doesn't block game\n",[185,3415,3416,3419,3421,3423,3425,3427,3429,3431,3434,3436,3439,3441,3443,3446,3449],{"class":187,"line":863},[185,3417,3418],{"class":216},"LogEventAsync",[185,3420,269],{"class":202},[185,3422,424],{"class":198},[185,3424,2317],{"class":427},[185,3426,424],{"class":198},[185,3428,262],{"class":202},[185,3430,424],{"class":198},[185,3432,3433],{"class":427},"Player connected",[185,3435,424],{"class":198},[185,3437,3438],{"class":202},", { steamid ",[185,3440,206],{"class":198},[185,3442,1678],{"class":198},[185,3444,3445],{"class":427},"STEAM_0:1:12345",[185,3447,3448],{"class":198},"\" ",[185,3450,3451],{"class":202},"})\n",[185,3453,3454,3456,3458,3460,3463,3465,3467,3469,3472,3474,3477,3479,3481,3484,3486,3489,3491,3494],{"class":187,"line":868},[185,3455,3418],{"class":216},[185,3457,269],{"class":202},[185,3459,424],{"class":198},[185,3461,3462],{"class":427},"economy",[185,3464,424],{"class":198},[185,3466,262],{"class":202},[185,3468,424],{"class":198},[185,3470,3471],{"class":427},"Purchase made",[185,3473,424],{"class":198},[185,3475,3476],{"class":202},", { item ",[185,3478,206],{"class":198},[185,3480,1678],{"class":198},[185,3482,3483],{"class":427},"weapon",[185,3485,424],{"class":198},[185,3487,3488],{"class":202},", cost ",[185,3490,206],{"class":198},[185,3492,3493],{"class":654}," 500",[185,3495,3496],{"class":202}," })\n",[185,3498,3499,3501,3503,3505,3508,3510,3512,3514,3517,3519,3522,3524,3526,3529,3531,3534,3536,3538,3541,3543],{"class":187,"line":873},[185,3500,3418],{"class":216},[185,3502,269],{"class":202},[185,3504,424],{"class":198},[185,3506,3507],{"class":427},"combat",[185,3509,424],{"class":198},[185,3511,262],{"class":202},[185,3513,424],{"class":198},[185,3515,3516],{"class":427},"Player killed",[185,3518,424],{"class":198},[185,3520,3521],{"class":202},", { killer ",[185,3523,206],{"class":198},[185,3525,1678],{"class":198},[185,3527,3528],{"class":427},"A",[185,3530,424],{"class":198},[185,3532,3533],{"class":202},", victim ",[185,3535,206],{"class":198},[185,3537,1678],{"class":198},[185,3539,3540],{"class":427},"B",[185,3542,3448],{"class":198},[185,3544,3451],{"class":202},[165,3546,3548],{"id":3547},"error-handling-patterns","Error Handling Patterns",[170,3550,3552],{"id":3551},"basic-error-handling","Basic Error Handling",[175,3554,3556],{"className":177,"code":3555,"language":179,"meta":180,"style":180},"collection:FindOneAsync({ steamid = steamid }, function(err, result)\n    if err then\n        print(\"Database error:\", err)\n        -- Handle error (notify player, retry, etc.)\n        return\n    end\n\n    -- Process result\nend)\n",[182,3557,3558,3584,3592,3607,3612,3616,3620,3624,3629],{"__ignoreMap":180},[185,3559,3560,3562,3564,3566,3568,3570,3572,3574,3576,3578,3580,3582],{"class":187,"line":188},[185,3561,248],{"class":209},[185,3563,213],{"class":202},[185,3565,907],{"class":216},[185,3567,923],{"class":202},[185,3569,206],{"class":198},[185,3571,928],{"class":202},[185,3573,266],{"class":265},[185,3575,269],{"class":198},[185,3577,273],{"class":272},[185,3579,276],{"class":198},[185,3581,279],{"class":272},[185,3583,282],{"class":198},[185,3585,3586,3588,3590],{"class":187,"line":195},[185,3587,332],{"class":265},[185,3589,335],{"class":202},[185,3591,338],{"class":265},[185,3593,3594,3596,3598,3600,3603,3605],{"class":187,"line":226},[185,3595,419],{"class":216},[185,3597,269],{"class":202},[185,3599,424],{"class":198},[185,3601,3602],{"class":427},"Database error:",[185,3604,424],{"class":198},[185,3606,433],{"class":202},[185,3608,3609],{"class":187,"line":290},[185,3610,3611],{"class":191},"        -- Handle error (notify player, retry, etc.)\n",[185,3613,3614],{"class":187,"line":298},[185,3615,438],{"class":265},[185,3617,3618],{"class":187,"line":356},[185,3619,359],{"class":265},[185,3621,3622],{"class":187,"line":362},[185,3623,713],{"emptyLinePlaceholder":712},[185,3625,3626],{"class":187,"line":716},[185,3627,3628],{"class":191},"    -- Process result\n",[185,3630,3631,3633],{"class":187,"line":745},[185,3632,293],{"class":265},[185,3634,282],{"class":202},[170,3636,3638],{"id":3637},"retry-pattern","Retry Pattern",[175,3640,3642],{"className":177,"code":3641,"language":179,"meta":180,"style":180},"function FindWithRetry(collection, filter, maxRetries, callback)\n    local attempts = 0\n\n    local function attempt()\n        attempts = attempts + 1\n        collection:FindOneAsync(filter, function(err, result)\n            if err and attempts \u003C maxRetries then\n                print(\"Retrying... attempt\", attempts + 1)\n                timer.Simple(1, attempt)  -- Wait 1 second before retry\n            else\n                callback(err, result)\n            end\n        end)\n    end\n\n    attempt()\nend\n\n-- Usage\nFindWithRetry(players, { steamid = steamid }, 3, function(err, player)\n    if err then\n        print(\"Failed after 3 attempts:\", err)\n    else\n        print(\"Found player:\", player.username)\n    end\nend)\n",[182,3643,3644,3671,3682,3686,3698,3713,3737,3756,3779,3797,3802,3809,3813,3820,3824,3828,3835,3839,3843,3847,3876,3884,3899,3903,3922,3926],{"__ignoreMap":180},[185,3645,3646,3648,3651,3653,3655,3657,3660,3662,3665,3667,3669],{"class":187,"line":188},[185,3647,266],{"class":265},[185,3649,3650],{"class":216}," FindWithRetry",[185,3652,269],{"class":198},[185,3654,248],{"class":272},[185,3656,276],{"class":198},[185,3658,3659],{"class":272}," filter",[185,3661,276],{"class":198},[185,3663,3664],{"class":272}," maxRetries",[185,3666,276],{"class":198},[185,3668,1857],{"class":272},[185,3670,282],{"class":198},[185,3672,3673,3675,3678,3680],{"class":187,"line":195},[185,3674,1864],{"class":198},[185,3676,3677],{"class":202}," attempts ",[185,3679,206],{"class":198},[185,3681,3020],{"class":654},[185,3683,3684],{"class":187,"line":226},[185,3685,713],{"emptyLinePlaceholder":712},[185,3687,3688,3690,3693,3696],{"class":187,"line":290},[185,3689,1864],{"class":198},[185,3691,3692],{"class":265}," function",[185,3694,3695],{"class":216}," attempt",[185,3697,2111],{"class":198},[185,3699,3700,3703,3705,3707,3710],{"class":187,"line":298},[185,3701,3702],{"class":202},"        attempts ",[185,3704,206],{"class":198},[185,3706,3677],{"class":202},[185,3708,3709],{"class":198},"+",[185,3711,3712],{"class":654}," 1\n",[185,3714,3715,3718,3720,3722,3725,3727,3729,3731,3733,3735],{"class":187,"line":356},[185,3716,3717],{"class":209},"        collection",[185,3719,213],{"class":202},[185,3721,907],{"class":216},[185,3723,3724],{"class":202},"(filter, ",[185,3726,266],{"class":265},[185,3728,269],{"class":198},[185,3730,273],{"class":272},[185,3732,276],{"class":198},[185,3734,279],{"class":272},[185,3736,282],{"class":198},[185,3738,3739,3741,3743,3746,3748,3751,3754],{"class":187,"line":362},[185,3740,2599],{"class":265},[185,3742,335],{"class":202},[185,3744,3745],{"class":198},"and",[185,3747,3677],{"class":202},[185,3749,3750],{"class":198},"\u003C",[185,3752,3753],{"class":202}," maxRetries ",[185,3755,338],{"class":265},[185,3757,3758,3761,3763,3765,3768,3770,3773,3775,3777],{"class":187,"line":716},[185,3759,3760],{"class":216},"                print",[185,3762,269],{"class":202},[185,3764,424],{"class":198},[185,3766,3767],{"class":427},"Retrying... attempt",[185,3769,424],{"class":198},[185,3771,3772],{"class":202},", attempts ",[185,3774,3709],{"class":198},[185,3776,1709],{"class":654},[185,3778,282],{"class":202},[185,3780,3781,3784,3787,3789,3791,3794],{"class":187,"line":745},[185,3782,3783],{"class":202},"                timer.",[185,3785,3786],{"class":216},"Simple",[185,3788,269],{"class":202},[185,3790,2940],{"class":654},[185,3792,3793],{"class":202},", attempt)  ",[185,3795,3796],{"class":191},"-- Wait 1 second before retry\n",[185,3798,3799],{"class":187,"line":766},[185,3800,3801],{"class":265},"            else\n",[185,3803,3804,3806],{"class":187,"line":788},[185,3805,2609],{"class":216},[185,3807,3808],{"class":202},"(err, result)\n",[185,3810,3811],{"class":187,"line":793},[185,3812,2623],{"class":265},[185,3814,3815,3818],{"class":187,"line":800},[185,3816,3817],{"class":265},"        end",[185,3819,282],{"class":202},[185,3821,3822],{"class":187,"line":805},[185,3823,359],{"class":265},[185,3825,3826],{"class":187,"line":811},[185,3827,713],{"emptyLinePlaceholder":712},[185,3829,3830,3833],{"class":187,"line":839},[185,3831,3832],{"class":216},"    attempt",[185,3834,2111],{"class":202},[185,3836,3837],{"class":187,"line":848},[185,3838,365],{"class":265},[185,3840,3841],{"class":187,"line":863},[185,3842,713],{"emptyLinePlaceholder":712},[185,3844,3845],{"class":187,"line":868},[185,3846,3098],{"class":191},[185,3848,3849,3852,3855,3857,3859,3862,3864,3866,3868,3870,3872,3874],{"class":187,"line":873},[185,3850,3851],{"class":216},"FindWithRetry",[185,3853,3854],{"class":202},"(players, { steamid ",[185,3856,206],{"class":198},[185,3858,928],{"class":202},[185,3860,3861],{"class":654},"3",[185,3863,262],{"class":202},[185,3865,266],{"class":265},[185,3867,269],{"class":198},[185,3869,273],{"class":272},[185,3871,276],{"class":198},[185,3873,1918],{"class":272},[185,3875,282],{"class":198},[185,3877,3878,3880,3882],{"class":187,"line":878},[185,3879,332],{"class":265},[185,3881,335],{"class":202},[185,3883,338],{"class":265},[185,3885,3886,3888,3890,3892,3895,3897],{"class":187,"line":899},[185,3887,419],{"class":216},[185,3889,269],{"class":202},[185,3891,424],{"class":198},[185,3893,3894],{"class":427},"Failed after 3 attempts:",[185,3896,424],{"class":198},[185,3898,433],{"class":202},[185,3900,3901],{"class":187,"line":2088},[185,3902,348],{"class":265},[185,3904,3905,3907,3909,3911,3914,3916,3918,3920],{"class":187,"line":2101},[185,3906,419],{"class":216},[185,3908,269],{"class":202},[185,3910,424],{"class":198},[185,3912,3913],{"class":427},"Found player:",[185,3915,424],{"class":198},[185,3917,2407],{"class":202},[185,3919,783],{"class":209},[185,3921,282],{"class":202},[185,3923,3924],{"class":187,"line":2114},[185,3925,359],{"class":265},[185,3927,3928,3930],{"class":187,"line":2120},[185,3929,293],{"class":265},[185,3931,282],{"class":202},[170,3933,3935],{"id":3934},"callback-wrapper","Callback Wrapper",[175,3937,3939],{"className":177,"code":3938,"language":179,"meta":180,"style":180},"function SafeCallback(callback)\n    return function(err, result)\n        local success, error = pcall(callback, err, result)\n        if not success then\n            print(\"Callback error:\", error)\n        end\n    end\nend\n\n-- Usage\ncollection:FindOneAsync(filter, SafeCallback(function(err, result)\n    -- Your callback code\nend))\n",[182,3940,3941,3954,3971,3987,3999,4019,4023,4027,4031,4035,4039,4066,4071],{"__ignoreMap":180},[185,3942,3943,3945,3948,3950,3952],{"class":187,"line":188},[185,3944,266],{"class":265},[185,3946,3947],{"class":216}," SafeCallback",[185,3949,269],{"class":198},[185,3951,2836],{"class":272},[185,3953,282],{"class":198},[185,3955,3956,3959,3961,3963,3965,3967,3969],{"class":187,"line":195},[185,3957,3958],{"class":265},"    return",[185,3960,3692],{"class":265},[185,3962,269],{"class":198},[185,3964,273],{"class":272},[185,3966,276],{"class":198},[185,3968,279],{"class":272},[185,3970,282],{"class":198},[185,3972,3973,3976,3979,3981,3984],{"class":187,"line":226},[185,3974,3975],{"class":198},"        local",[185,3977,3978],{"class":202}," success, error ",[185,3980,206],{"class":198},[185,3982,3983],{"class":216}," pcall",[185,3985,3986],{"class":202},"(callback, err, result)\n",[185,3988,3989,3991,3994,3997],{"class":187,"line":290},[185,3990,1208],{"class":265},[185,3992,3993],{"class":198}," not",[185,3995,3996],{"class":202}," success ",[185,3998,338],{"class":265},[185,4000,4001,4003,4005,4007,4010,4012,4014,4017],{"class":187,"line":298},[185,4002,1217],{"class":216},[185,4004,269],{"class":202},[185,4006,424],{"class":198},[185,4008,4009],{"class":427},"Callback error:",[185,4011,424],{"class":198},[185,4013,262],{"class":202},[185,4015,4016],{"class":216},"error",[185,4018,282],{"class":202},[185,4020,4021],{"class":187,"line":356},[185,4022,1238],{"class":265},[185,4024,4025],{"class":187,"line":362},[185,4026,359],{"class":265},[185,4028,4029],{"class":187,"line":716},[185,4030,365],{"class":265},[185,4032,4033],{"class":187,"line":745},[185,4034,713],{"emptyLinePlaceholder":712},[185,4036,4037],{"class":187,"line":766},[185,4038,3098],{"class":191},[185,4040,4041,4043,4045,4047,4049,4052,4054,4056,4058,4060,4062,4064],{"class":187,"line":788},[185,4042,248],{"class":209},[185,4044,213],{"class":202},[185,4046,907],{"class":216},[185,4048,3724],{"class":202},[185,4050,4051],{"class":216},"SafeCallback",[185,4053,269],{"class":202},[185,4055,266],{"class":265},[185,4057,269],{"class":198},[185,4059,273],{"class":272},[185,4061,276],{"class":198},[185,4063,279],{"class":272},[185,4065,282],{"class":198},[185,4067,4068],{"class":187,"line":793},[185,4069,4070],{"class":191},"    -- Your callback code\n",[185,4072,4073,4075],{"class":187,"line":800},[185,4074,293],{"class":265},[185,4076,3220],{"class":202},[165,4078,4080],{"id":4079},"best-practices","Best Practices",[4082,4083,4084,4091,4097,4103,4109],"ol",{},[4085,4086,4087,4090],"li",{},[594,4088,4089],{},"Use async for gameplay logic",": Prevents server lag",[4085,4092,4093,4096],{},[594,4094,4095],{},"Handle all errors",": Never ignore the error parameter",[4085,4098,4099,4102],{},[594,4100,4101],{},"Use fire-and-forget for logging",": Non-critical operations",[4085,4104,4105,4108],{},[594,4106,4107],{},"Avoid callback hell",": Structure code cleanly",[4085,4110,4111,4114],{},[594,4112,4113],{},"Consider timeouts",": Handle slow operations",[175,4116,4118],{"className":177,"code":4117,"language":179,"meta":180,"style":180},"-- Avoid deep nesting (callback hell)\n-- Bad:\ncollection:FindAsync(filter, 100, function(err, results)\n    if not err then\n        collection:UpdateAsync(filter2, update, function(err, result)\n            if not err then\n                collection:FindAsync(filter3, 100, function(err, results)\n                    -- Too deep!\n                end)\n            end\n        end)\n    end\nend)\n\n-- Better: Use separate functions\nlocal function step3(data)\n    collection:FindAsync(data.filter, 100, function(err, results)\n        -- Handle final step\n    end)\nend\n\nlocal function step2(data)\n    collection:UpdateAsync(data.filter, data.update, function(err, result)\n        if not err then step3(data) end\n    end)\nend\n\nlocal function step1(data)\n    collection:FindAsync(data.filter, 100, function(err, results)\n        if not err then step2(data) end\n    end)\nend\n",[182,4119,4120,4125,4130,4156,4166,4190,4200,4228,4233,4240,4244,4250,4254,4260,4264,4269,4285,4318,4323,4329,4333,4337,4352,4384,4402,4408,4412,4416,4431,4461,4477,4483],{"__ignoreMap":180},[185,4121,4122],{"class":187,"line":188},[185,4123,4124],{"class":191},"-- Avoid deep nesting (callback hell)\n",[185,4126,4127],{"class":187,"line":195},[185,4128,4129],{"class":191},"-- Bad:\n",[185,4131,4132,4134,4136,4138,4140,4142,4144,4146,4148,4150,4152,4154],{"class":187,"line":226},[185,4133,248],{"class":209},[185,4135,213],{"class":202},[185,4137,253],{"class":216},[185,4139,3724],{"class":202},[185,4141,661],{"class":654},[185,4143,262],{"class":202},[185,4145,266],{"class":265},[185,4147,269],{"class":198},[185,4149,273],{"class":272},[185,4151,276],{"class":198},[185,4153,1738],{"class":272},[185,4155,282],{"class":198},[185,4157,4158,4160,4162,4164],{"class":187,"line":290},[185,4159,332],{"class":265},[185,4161,3993],{"class":198},[185,4163,335],{"class":202},[185,4165,338],{"class":265},[185,4167,4168,4170,4172,4175,4178,4180,4182,4184,4186,4188],{"class":187,"line":298},[185,4169,3717],{"class":209},[185,4171,213],{"class":202},[185,4173,4174],{"class":216},"UpdateAsync",[185,4176,4177],{"class":202},"(filter2, update, ",[185,4179,266],{"class":265},[185,4181,269],{"class":198},[185,4183,273],{"class":272},[185,4185,276],{"class":198},[185,4187,279],{"class":272},[185,4189,282],{"class":198},[185,4191,4192,4194,4196,4198],{"class":187,"line":356},[185,4193,2599],{"class":265},[185,4195,3993],{"class":198},[185,4197,335],{"class":202},[185,4199,338],{"class":265},[185,4201,4202,4205,4207,4209,4212,4214,4216,4218,4220,4222,4224,4226],{"class":187,"line":362},[185,4203,4204],{"class":209},"                collection",[185,4206,213],{"class":202},[185,4208,253],{"class":216},[185,4210,4211],{"class":202},"(filter3, ",[185,4213,661],{"class":654},[185,4215,262],{"class":202},[185,4217,266],{"class":265},[185,4219,269],{"class":198},[185,4221,273],{"class":272},[185,4223,276],{"class":198},[185,4225,1738],{"class":272},[185,4227,282],{"class":198},[185,4229,4230],{"class":187,"line":716},[185,4231,4232],{"class":191},"                    -- Too deep!\n",[185,4234,4235,4238],{"class":187,"line":745},[185,4236,4237],{"class":265},"                end",[185,4239,282],{"class":202},[185,4241,4242],{"class":187,"line":766},[185,4243,2623],{"class":265},[185,4245,4246,4248],{"class":187,"line":788},[185,4247,3817],{"class":265},[185,4249,282],{"class":202},[185,4251,4252],{"class":187,"line":793},[185,4253,359],{"class":265},[185,4255,4256,4258],{"class":187,"line":800},[185,4257,293],{"class":265},[185,4259,282],{"class":202},[185,4261,4262],{"class":187,"line":805},[185,4263,713],{"emptyLinePlaceholder":712},[185,4265,4266],{"class":187,"line":811},[185,4267,4268],{"class":191},"-- Better: Use separate functions\n",[185,4270,4271,4273,4275,4278,4280,4283],{"class":187,"line":839},[185,4272,199],{"class":198},[185,4274,3692],{"class":265},[185,4276,4277],{"class":216}," step3",[185,4279,269],{"class":198},[185,4281,4282],{"class":272},"data",[185,4284,282],{"class":198},[185,4286,4287,4290,4292,4294,4297,4300,4302,4304,4306,4308,4310,4312,4314,4316],{"class":187,"line":848},[185,4288,4289],{"class":209},"    collection",[185,4291,213],{"class":202},[185,4293,253],{"class":216},[185,4295,4296],{"class":202},"(data.",[185,4298,4299],{"class":209},"filter",[185,4301,262],{"class":202},[185,4303,661],{"class":654},[185,4305,262],{"class":202},[185,4307,266],{"class":265},[185,4309,269],{"class":198},[185,4311,273],{"class":272},[185,4313,276],{"class":198},[185,4315,1738],{"class":272},[185,4317,282],{"class":198},[185,4319,4320],{"class":187,"line":863},[185,4321,4322],{"class":191},"        -- Handle final step\n",[185,4324,4325,4327],{"class":187,"line":868},[185,4326,2220],{"class":265},[185,4328,282],{"class":202},[185,4330,4331],{"class":187,"line":873},[185,4332,365],{"class":265},[185,4334,4335],{"class":187,"line":878},[185,4336,713],{"emptyLinePlaceholder":712},[185,4338,4339,4341,4343,4346,4348,4350],{"class":187,"line":899},[185,4340,199],{"class":198},[185,4342,3692],{"class":265},[185,4344,4345],{"class":216}," step2",[185,4347,269],{"class":198},[185,4349,4282],{"class":272},[185,4351,282],{"class":198},[185,4353,4354,4356,4358,4360,4362,4364,4367,4370,4372,4374,4376,4378,4380,4382],{"class":187,"line":2088},[185,4355,4289],{"class":209},[185,4357,213],{"class":202},[185,4359,4174],{"class":216},[185,4361,4296],{"class":202},[185,4363,4299],{"class":209},[185,4365,4366],{"class":202},", data.",[185,4368,4369],{"class":209},"update",[185,4371,262],{"class":202},[185,4373,266],{"class":265},[185,4375,269],{"class":198},[185,4377,273],{"class":272},[185,4379,276],{"class":198},[185,4381,279],{"class":272},[185,4383,282],{"class":198},[185,4385,4386,4388,4390,4392,4395,4397,4400],{"class":187,"line":2101},[185,4387,1208],{"class":265},[185,4389,3993],{"class":198},[185,4391,335],{"class":202},[185,4393,4394],{"class":265},"then",[185,4396,4277],{"class":216},[185,4398,4399],{"class":202},"(data) ",[185,4401,365],{"class":265},[185,4403,4404,4406],{"class":187,"line":2114},[185,4405,2220],{"class":265},[185,4407,282],{"class":202},[185,4409,4410],{"class":187,"line":2120},[185,4411,365],{"class":265},[185,4413,4414],{"class":187,"line":2145},[185,4415,713],{"emptyLinePlaceholder":712},[185,4417,4418,4420,4422,4425,4427,4429],{"class":187,"line":2155},[185,4419,199],{"class":198},[185,4421,3692],{"class":265},[185,4423,4424],{"class":216}," step1",[185,4426,269],{"class":198},[185,4428,4282],{"class":272},[185,4430,282],{"class":198},[185,4432,4433,4435,4437,4439,4441,4443,4445,4447,4449,4451,4453,4455,4457,4459],{"class":187,"line":2167},[185,4434,4289],{"class":209},[185,4436,213],{"class":202},[185,4438,253],{"class":216},[185,4440,4296],{"class":202},[185,4442,4299],{"class":209},[185,4444,262],{"class":202},[185,4446,661],{"class":654},[185,4448,262],{"class":202},[185,4450,266],{"class":265},[185,4452,269],{"class":198},[185,4454,273],{"class":272},[185,4456,276],{"class":198},[185,4458,1738],{"class":272},[185,4460,282],{"class":198},[185,4462,4463,4465,4467,4469,4471,4473,4475],{"class":187,"line":2173},[185,4464,1208],{"class":265},[185,4466,3993],{"class":198},[185,4468,335],{"class":202},[185,4470,4394],{"class":265},[185,4472,4345],{"class":216},[185,4474,4399],{"class":202},[185,4476,365],{"class":265},[185,4478,4479,4481],{"class":187,"line":2187},[185,4480,2220],{"class":265},[185,4482,282],{"class":202},[185,4484,4485],{"class":187,"line":2198},[185,4486,365],{"class":265},[165,4488,4490],{"id":4489},"next-steps","Next Steps",[4492,4493,4494,4500,4505],"ul",{},[4085,4495,4496,4499],{},[4497,4498,80],"a",{"href":81}," - Advanced filtering",[4085,4501,4502,4504],{},[4497,4503,85],{"href":86}," - Aggregation and indexes",[4085,4506,4507,4509],{},[4497,4508,103],{"href":104}," - Real-world async examples",[4511,4512,4513],"style",{},"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 .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 .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}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}",{"title":180,"searchDepth":188,"depth":195,"links":4515},[4516,4520,4521,4528,4534,4539,4540],{"id":167,"depth":195,"text":168,"children":4517},[4518,4519],{"id":172,"depth":226,"text":173},{"id":232,"depth":226,"text":233},{"id":304,"depth":195,"text":305},{"id":368,"depth":195,"text":369,"children":4522},[4523,4524,4525,4526,4527],{"id":372,"depth":226,"text":55},{"id":567,"depth":226,"text":60},{"id":1130,"depth":226,"text":65},{"id":1397,"depth":226,"text":70},{"id":1623,"depth":226,"text":1624},{"id":1830,"depth":195,"text":1831,"children":4529},[4530,4531,4532,4533],{"id":1834,"depth":226,"text":1835},{"id":2485,"depth":226,"text":2486},{"id":2818,"depth":226,"text":2819},{"id":3233,"depth":226,"text":3234},{"id":3547,"depth":195,"text":3548,"children":4535},[4536,4537,4538],{"id":3551,"depth":226,"text":3552},{"id":3637,"depth":226,"text":3638},{"id":3934,"depth":226,"text":3935},{"id":4079,"depth":195,"text":4080},{"id":4489,"depth":195,"text":4490},"Non-blocking database operations with callbacks","md",null,{},{"icon":78},{"title":75,"description":4541},"LdRpw27RbXiyyWSTrm815Imfn1o0Ksq_qeOh6q_QPBc",[4549,4551],{"title":70,"path":71,"stem":72,"description":4550,"icon":73,"children":-1},"Remove documents from MongoDB collections",{"title":80,"path":81,"stem":82,"description":4552,"icon":83,"children":-1},"MongoDB comparison, logical, and array operators",1774271023675]