MongoDB $Max оператор

Mongodb Max Operator



MongoDB създаде много оператори за извършване на транзакции със специално предназначение като актуализиране на записите, добавяне на нов запис и показване на записите при определено условие. Един от тези оператори е операторът '$max', който се използва за проверка на най-голямата стойност в записа. Освен това можем да го използваме, за да актуализираме най-малката стойност с нова най-голяма стойност, след като ги сравним в инструкцията на функцията „актуализация“. Другата употреба на оператора '$max' е да групира и показва записите на определена колекция по начин, който може да показва само най-голямата стойност, като същевременно игнорира най-малката стойност, когато има някои дублиращи се записи в базата данни. В това ръководство ще използваме прости примери за заявки, за да обсъдим споменатите по-горе употреби на оператора „$max“ в помощната програма за команден ред MongoDB в нашата платформа Windows.

Пример 1:

Започвайки с илюстрацията, за да обсъдим и как работи операторът „$max“ в обвивката на MongoDB, трябва да имаме колекция с име „данни“, която вече трябва да бъде създадена. За да създадем тази колекция, трябва да добавим някои записи в нея директно, без да използваме каквато и да е инструкция за „създаване“. Инструкцията за вмъкване е достатъчна, за да създадете колекция и да добавите записите в нея. Използваме функцията „insertMany“ в заявката, за да добавим четири записа, всеки от които има 4 полета от различни типове.

тест > db.data.insertMany ( [ { 'документ за самоличност' : един , 'Име' : 'Браво' , 'Заплата' : 65 000 , 'възраст' : 44 } ,
... { 'документ за самоличност' : 2 , 'Име' : 'Стивън' , 'Заплата' : 77 000 , 'възраст' : 55 } ,
... { 'документ за самоличност' : 3 , 'Име' : 'Мария' , 'Заплата' : 42000 , 'възраст' : 27 } ,
... { 'документ за самоличност' : 4 , 'Име' : 'Хокин' , 'Заплата' : 58 000 , 'възраст' : 33 } ] )







Командата за вмъкване е успешна и изходното съобщение показва, че записите са добавени.



След като вмъкнете записите в колекцията „данни“ на нашата MongoDB, е време да видите тези записи в обвивката. По този начин изпълняваме инструкцията за функцията „find()“ на MongoDB Cli, последвана от функцията „forEach()“, като вземаме аргумента printjson, за да покажем резултат във формат JSON. Резултатът, който се показва в обвивката, показва общо 4 документа в колекцията, които са показани в следното изходно изображение:



тест > db.data.find ( ) .за всеки ( printjson )





Нека изпробваме оператора „$max“ в командата за актуализиране на MongoDB, за да променим вече вмъкнатите записи. По този начин updateOne() се използва тук само за модифициране на единичен запис от събиране на „данни“ като конкретен запис, където полето „id“ има стойност „2“. Операторът „$max“ се прилага към полето „Заплата“ на колекцията „данни“, за да провери дали полето „Заплата“ има стойност, която е по-голяма от 55 000. Ако не, актуализирайте записа с 55 000. Изходният резултат за това Заявка за функция updateOne(), която показва брой модификации „0“ като запис „2“ има по-малко от 55 000 стойност на заплата.

тест > db.data.updateOne ( { документ за самоличност: 2 } , { $макс : { Заплата: 55 000 } } )



След тази актуализация опитваме същата заявка за функция „find()“, за да покажем променения резултат в обвивката на командния ред на MongoDB. Но получаваме същия изход, който получихме преди да използваме инструкцията „актуализация“. Нямаше промяна, защото стойността 77 000 е по-голяма от 55 000.

тест > db.data.find ( ) .за всеки ( printjson )

Нека отново изпробваме същата updateOne() заявка с малка модификация. Този път опитваме по-голямата стойност, която е „85 000“, отколкото стойността „77 000“, която вече се намира в полето „Заплата“ на събирането на „данни“, за да направим разлика в нашия резултат. Резултатът показва броя на модификациите „1“ този път, тъй като стойността „85 000“ замества вече съществуващата стойност на „77 000“ в полето, след като сравнението се случи само поради оператора „$max“ в тази заявка.

тест > db.data.updateOne ( { документ за самоличност: 2 } , { $макс : { Заплата: 85 000 } } )

След успешна замяна на по-малката стойност на „77000“ с нова стойност на „85000“ чрез оператора „$max“ на MongoDB, най-накрая използваме функцията „find()“ в инструкцията „db“, за да проверим за тази актуализация, дали е успешно актуализиран или не. Резултатът показва, че стойността в полето „Заплата“ на втори запис в тази колекция е перфектно актуализирана.

тест > db.data.find ( ) .за всеки ( printjson )

Пример 2:

Нека преминем към друг пример, за да използваме оператора '$max' в MongoDB. Този път отхвърлихме оператора „$max“, за да групираме и покажем уникалните записи на колекция, ако има дублирани стойности за едни и същи полета. За целта вмъкваме още 2 записа в колекцията „данни“ на „тестова“ база данни. Тези записи съдържат 2 същите стойности в полето „Име“, които са и във вече вмъкнатите 4 записа, а останалите са различни. За да вмъкнем записите, ние използваме същата инструкция „db“, която съдържа функцията „insertMany“ в нея, за да се актуализира колекцията „данни“.

тест > db.data.insertMany ( [ { 'документ за самоличност' : 5 , 'Име' : 'Браво' , 'Заплата' : 35 000 , 'възраст' : Четири пет } ,
{ 'документ за самоличност' : 6 , 'Име' : 'Хокин' , 'Заплата' : 67000 , 'възраст' : 33 } ] )

Инструкцията е изпълнена успешно.

Сега, когато 2 нови записа са добавени, можете също да ги покажете, като използвате същата функция „find“ в инструкцията „db“, последвана от функцията „forEach“. Следният изход на дисплея в изображението показва 2 нови записа в края на тази колекция:

тест > db.data.find ( ) .за всеки ( printjson )

След като покажем 6-те записа за събиране на „данни“, ние сме готови да изпълним обобщителната функция върху тях. Следователно функцията „агрегиране“ се използва в следната изброена заявка. С тази функция ние използваме оператора „$group“, за да групираме записа на колекция „данни“ според уникалните имена на полето „id“ и полето „Salary“. Операторът „$max“ се прилага към полето „Заплата“ на записите, за да получите максималните стойности, които да бъдат показани. Вземете най-голямата стойност от полето „Заплата“ според дублиращите се имена в полето „Име“, което се използва като „id“, за да се покаже това групиране. Показани са общо 4 записа. Най-малката стойност (от дублиращите се записи) се игнорират, докато най-голямата стойност се показва.

db.data.aggregate ( [ { $група : { _документ за самоличност: ' $Name ' , Заплата: { $макс : ' $ Заплата ' } } } ] )

Заключение

Първият параграф от това ръководство ви помага да разберете важността на операторите, които се използват в MongoDB, особено оператора “$max” и използването му в обвивката на MongoDB. Това ръководство съдържа два примера, базирани на команди, които са свързани с оператора „$max“, за да демонстрират неговата цел. Преминавайки през илюстрациите на MongoDB, вие ще можете да извършите някои полезни транзакции в базата данни, независимо дали става въпрос за замяна на вече съществуващ запис с нова стойност или показване на записите, като ги групирате чрез оператора „$max“.