МонгоДБ $Мак Оператор

Mongodb Mak Operator



МонгоДБ је смислио многе оператере за обављање трансакција посебне намене као што је ажурирање записа, додавање новог записа и приказивање записа под одређеним условима. Један од тих оператора је „$мак“ оператор који се користи за проверу највеће вредности у запису. Осим тога, можемо га користити да ажурирамо најмању вредност новом највећом вредношћу након што их упоредимо у инструкцији функције „ажурирај“. Друга употреба „$мак“ оператора је груписање и приказивање записа одређене колекције на начин да може да прикаже само највећу вредност док игнорише најмању вредност када постоје дупли записи у бази података. У овом водичу користићемо једноставне примере упита да бисмо разговарали о претходно поменутим употребама „$мак“ оператора у услужном програму МонгоДБ командне линије на нашој Виндовс платформи.

Пример 1:

Почевши од илустрације за дискусију о томе како „$мак“ оператор функционише у љусци МонгоДБ, потребно је да имамо колекцију под називом „подаци“ која се већ мора креирати. Да бисмо креирали ову колекцију, морамо у њу директно додати неке записе без употребе инструкција „креирај“. Инструкција за уметање је довољна за креирање колекције и додавање записа у њу. Користимо функцију „инсертМани“ у упиту да бисмо додали четири записа, од којих сваки има 4 поља различитих типова.

тест > дб.дата.инсертМани ( [ { 'ид' : једно , 'име' : 'Браво' , 'Плата' : 65000 , 'старост' : 44 } ,
... { 'ид' : 2 , 'име' : 'Стефан' , 'Плата' : 77000 , 'старост' : 55 } ,
... { 'ид' : 3 , 'име' : 'Марија' , 'Плата' : 42000 , 'старост' : 27 } ,
... { 'ид' : 4 , 'име' : 'Хавкин' , 'Плата' : 58000 , 'старост' : 33 } ] )







Команда уметања је успешна и излазна порука показује да су записи додати.



Након уметања записа у колекцију „података“ нашег МонгоДБ-а, време је да видите те записе на љусци. Дакле, покрећемо инструкцију функције „финд()“ на МонгоДБ Цли-у праћену функцијом „форЕацх()“, узимајући аргумент принтјсон да прикажемо резултат у ЈСОН формату. Резултат који је приказан у љусци показује укупно 4 документа у колекцији који су приказани на следећој излазној слици:



тест > дб.дата.финд ( ) .за сваки ( принтјсон )





Хајде да испробамо оператор „$мак“ у команди ажурирања МонгоДБ-а да изменимо већ уметнуте записе. Дакле, упдатеОне() се овде користи само за модификацију само једног записа колекције „података“, попут одређеног записа где поље „ид“ има вредност „2“. Оператор „$мак“ се примењује на поље „Плата“ у прикупљању „података“ да би се проверило да ли поље „Плата“ има вредност већу од 55000. Ако није, ажурирајте запис са 55000. Излазни резултат за ово Упит функције упдатеОне() који приказује број измена „0” јер запис „2” има мање од 55000 вредности плате.

тест > дб.дата.упдатеОне ( { ид: 2 } , { $мак : { Плата: 55000 } } )



Након овог ажурирања, покушавамо са истим упитом функције „финд()“ да прикажемо измењени резултат на љусци командне линије МонгоДБ. Али добијамо исти излаз који смо добили пре употребе инструкције „ажурирај“. Није било промене јер је вредност 77000 већа од 55000.

тест > дб.дата.финд ( ) .за сваки ( принтјсон )

Испробајмо још једном исти упит упдатеОне() са малом модификацијом. Овог пута покушавамо са већом вредношћу која је „85000“ од вредности „77000“ која се већ налази у пољу „Плата“ збирке „података“ да бисмо направили разлику у нашем излазу. Излаз показује број модификација „1” овога пута јер вредност „85000” замењује већ постојећу вредност „77000” у пољу након што се поређење догодило само због оператора „$мак” у овом упиту.

тест > дб.дата.упдатеОне ( { ид: 2 } , { $мак : { Плата: 85000 } } )

Након што смо успешно заменили мању вредност „77000“ новом вредношћу „85000“ преко „$мак“ оператора МонгоДБ-а, коначно користимо функцију „финд()“ у „дб“ инструкцији да проверимо да ли постоји ово ажурирање, да ли је успешно ажуриран или не. Излаз показује да је вредност у пољу „Плата“ другог записа у овој колекцији савршено ажурирана.

тест > дб.дата.финд ( ) .за сваки ( принтјсон )

Пример 2:

Хајде да пређемо на други пример да бисмо користили оператор „$мак“ у МонгоДБ-у. Овог пута смо искључили оператор „$мак“ да бисмо груписали и приказали јединствене записе колекције ако постоје дупликати за исте вредности поља. За ово убацујемо још 2 записа у колекцију „података“ базе података „тест“. Ови записи садрже 2 исте вредности у пољу „Име“ које су такође у већ уметнута 4 записа, а остале су различите. Да бисмо убацили записе, користимо исту инструкцију „дб“ која садржи функцију „инсертМани“ да би се колекција „података“ ажурирала.

тест > дб.дата.инсертМани ( [ { 'ид' : 5 , 'име' : 'Браво' , 'Плата' : 35000 , 'старост' : Четири, пет } ,
{ 'ид' : 6 , 'име' : 'Хавкин' , 'Плата' : 67000 , 'старост' : 33 } ] )

Инструкција је успешно извршена.

Сада када су додата 2 нова записа, можете их приказати користећи исту функцију „пронађи“ у „дб“ инструкцији коју прати функција „форЕацх“. Следећи излаз на слици приказује 2 нова записа на крају ове колекције:

тест > дб.дата.финд ( ) .за сваки ( принтјсон )

Након што прикажемо 6 записа прикупљања „података“, спремни смо да извршимо агрегатну функцију на њему. Дакле, функција „агрегат“ се користи у следећем наведеном упиту. Са овом функцијом користимо оператор „$гроуп“ за груписање записа збирке „података“ према јединственим називима поља „ид“ и поља „Плата“. Оператор „$мак“ се примењује на поље „Плата“ записа да би се добиле максималне вредности које ће бити приказане. Добијте највећу вредност из поља Плата“ према дуплираним именима у пољу „Име“ које се користи као „ид“ за ово груписање које ће бити приказано. Приказују се укупно 4 записа. Најмања вредност (из дупликата) се занемарују док је највећа вредност приказана.

дб.дата.аггрегате ( [ { $гроуп : { _ид: ' $Наме ' , Плата: { $мак : ' $Салари ' } } } ] )

Закључак

Први пасус овог водича помаже вам да разумете важност оператора који се користе у МонгоДБ, посебно „$мак“ оператора и његове употребе у љусци МонгоДБ. Овај водич садржи два примера заснована на команди који се односе на „$мак“ оператор да би демонстрирали његову сврху. Пролазећи кроз илустрације МонгоДБ, моћи ћете да извршите неке корисне трансакције у бази података, било да се ради о замени већ постојећег записа новом вредношћу или о приказивању записа тако што ћете их груписати преко „$мак“ оператора.