Оператор MongoDB $Max

Operator Mongodb Max



MongoDB предлагает множество операторов для выполнения транзакций специального назначения, таких как обновление записей, добавление новой записи и отображение записей при определенных условиях. Одним из таких операторов является оператор «$max», который используется для проверки наибольшего значения в записи. Кроме того, мы можем использовать его для обновления наименьшего значения новым наибольшим значением после их сравнения в инструкции функции «обновить». Другое использование оператора «$max» заключается в группировании и отображении записей определенной коллекции таким образом, что он может отображать только наибольшее значение, игнорируя наименьшее значение, когда в базе данных есть несколько повторяющихся записей. В этом руководстве мы собираемся использовать простые примеры запросов, чтобы обсудить ранее упомянутое использование оператора «$max» в утилите командной строки MongoDB на нашей платформе Windows.

Пример 1:

Начиная с иллюстрации для обсуждения и того, как работает оператор «$max» в оболочке MongoDB, нам нужно иметь коллекцию с именем «данные», которая должна быть уже создана. Чтобы создать эту коллекцию, мы должны добавить в нее некоторые записи напрямую, без использования какой-либо инструкции «создать». Инструкции вставки достаточно, чтобы создать коллекцию и добавить в нее записи. Мы используем функцию «insertMany» в запросе, чтобы добавить четыре записи, каждая из которых имеет 4 поля разных типов.

контрольная работа > db.data.insertMany ( [ { 'я бы' : один , 'Имя' : 'Браво' , 'Оплата труда' : 65000 , 'Возраст' : 44 } ,
... { 'я бы' : 2 , 'Имя' : 'Стивен' , 'Оплата труда' : 77000 , 'Возраст' : 55 } ,
... { 'я бы' : 3 , 'Имя' : 'Мария' , 'Оплата труда' : 42000 , 'Возраст' : 27 } ,
... { 'я бы' : 4 , 'Имя' : 'Хокин' , 'Оплата труда' : 58000 , 'Возраст' : 33 } ] )







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



После вставки записей в коллекцию «данных» нашей MongoDB пришло время увидеть эти записи в оболочке. Таким образом, мы запускаем инструкцию функции «find()» в Cli MongoDB, за которой следует функция «forEach()», принимая аргумент printjson для отображения результата в формате JSON. Результат, отображаемый в оболочке, показывает всего 4 документа в коллекции, которые показаны на следующем выходном изображении:



контрольная работа > db.data.find ( ) .для каждого ( printjson )





Давайте попробуем использовать оператор «$max» в команде обновления MongoDB, чтобы изменить уже вставленные записи. Таким образом, updateOne() используется здесь только для изменения одной записи коллекции «данных», такой как конкретная запись, где поле «id» имеет значение «2». Оператор «$max» применяется к полю «Зарплата» коллекции «данные», чтобы проверить, имеет ли поле «Зарплата» значение, превышающее 55000. Если нет, обновите запись на 55000. Результат вывода для этого Функциональный запрос updateOne (), который показывает количество модификаций «0», поскольку запись «2» имеет значение заработной платы менее 55000.

контрольная работа > db.data.updateOne ( { я бы: 2 } , { $макс. : { Оплата труда: 55000 } } )



После этого обновления мы пытаемся выполнить тот же запрос функции «find()», чтобы отобразить измененный результат в оболочке командной строки MongoDB. Но мы получаем тот же результат, что и до использования инструкции «обновить». Изменений не было, поскольку значение 77 000 больше, чем 55 000.

контрольная работа > db.data.find ( ) .для каждого ( printjson )

Давайте еще раз попробуем тот же запрос updateOne() с небольшой модификацией. На этот раз мы пробуем большее значение, равное «85000», чем значение «77000», которое уже находится в поле «Зарплата» коллекции «данных», чтобы изменить результат. На этот раз вывод показывает количество модификаций «1», так как значение «85000» заменяет уже находящееся значение «77000» в поле после того, как сравнение произошло только из-за оператора «$max» в этом запросе.

контрольная работа > db.data.updateOne ( { я бы: 2 } , { $макс. : { Оплата труда: 85000 } } )

После успешной замены меньшего значения «77000» новым значением «85000» с помощью оператора «$max» MongoDB мы, наконец, используем функцию «find()» в инструкции «db», чтобы проверить это обновление, успешно ли он обновлен или нет. Вывод показывает, что значение в поле «Зарплата» второй записи в этой коллекции полностью обновлено.

контрольная работа > db.data.find ( ) .для каждого ( printjson )

Пример 2:

Давайте перейдем к другому примеру использования оператора «$max» в MongoDB. На этот раз мы отказались от оператора «$max», чтобы сгруппировать и отобразить уникальные записи коллекции, если есть какие-либо дубликаты для одних и тех же значений поля. Для этого вставляем еще 2 записи в коллекцию «data» «тестовой» базы данных. Эти записи содержат 2 одинаковых значения в поле «Имя», которые есть и в уже вставленных 4 записях, а остальные отличаются. Чтобы вставить записи, мы используем ту же инструкцию «db», которая содержит функцию «insertMany» для обновления коллекции «данных».

контрольная работа > db.data.insertMany ( [ { 'я бы' : 5 , 'Имя' : 'Браво' , 'Оплата труда' : 35000 , 'Возраст' : Четыре пять } ,
{ 'я бы' : 6 , 'Имя' : 'Хокин' , 'Оплата труда' : 67000 , 'Возраст' : 33 } ] )

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

Теперь, когда добавлены две новые записи, вы также можете отобразить их, используя ту же функцию «найти» в инструкции «db», за которой следует функция «forEach». Следующий вывод на изображении показывает две новые записи в конце этой коллекции:

контрольная работа > db.data.find ( ) .для каждого ( printjson )

После отображения 6 записей коллекции «данных» мы готовы выполнить над ней агрегатную функцию. Следовательно, функция «агрегат» используется в следующем запросе. С помощью этой функции мы используем оператор «$group» для группировки записи коллекции «данных» в соответствии с уникальными именами поля «id» и поля «Зарплата». Оператор «$max» применяется к полю «Зарплата» записей, чтобы получить максимальные отображаемые значения. Получите наибольшее значение из поля «Зарплата» в соответствии с повторяющимися именами в поле «Имя», которое используется в качестве «идентификатора» для отображения этой группы. Всего отображается 4 записи. Наименьшее значение (из повторяющихся записей) игнорируется, а отображается наибольшее значение.

db.data.aggregate ( [ { $ группа : { _я бы: ' $имя ' , Оплата труда: { $макс. : ' $Зарплата ' } } } ] )

Заключение

Первый абзац этого руководства поможет вам понять важность операторов, используемых в MongoDB, особенно оператора «$max» и его использования в оболочке MongoDB. Это руководство содержит два примера на основе команд, связанных с оператором «$max», чтобы продемонстрировать его назначение. Просматривая иллюстрации MongoDB, вы сможете выполнять некоторые полезные транзакции в базе данных, будь то замена уже существующей записи новым значением или отображение записей путем их группировки с помощью оператора «$max».