Operador $Max de MongoDB

Operador Max De Mongodb



MongoDB va crear molts operadors per realitzar transaccions amb finalitats especials, com ara actualitzar els registres, afegir un registre nou i mostrar els registres sota una determinada condició. Un d'aquests operadors és l'operador '$max' que s'utilitza per comprovar el valor més gran del registre. A part d'això, el podem utilitzar per actualitzar el valor més petit amb un nou valor més gran després de comparar-los a la instrucció de la funció 'actualitzar'. L'altre ús de l'operador '$max' és agrupar i mostrar els registres d'una determinada col·lecció de manera que només pugui mostrar el valor més gran i ignorar el valor més petit quan hi ha alguns registres duplicats a la base de dades. En aquesta guia, farem servir exemples de consultes senzills per discutir els usos esmentats anteriorment de l'operador '$max' a la utilitat de línia d'ordres MongoDB a la nostra plataforma Windows.

Exemple 1:

Començant per la il·lustració a discutir i com funciona l'operador '$max' a l'intèrpret d'ordres de MongoDB, hem de tenir una col·lecció anomenada 'dades' que ja s'ha de crear. Per crear aquesta col·lecció, hem d'afegir-hi alguns registres directament sense utilitzar cap instrucció de 'crear'. La instrucció d'inserció és suficient per crear una col·lecció i afegir-hi els registres. Utilitzem la funció 'insertMany' a la consulta per afegir quatre registres, cadascun amb 4 camps de diferents tipus.

prova > db.data.insertMany ( [ { 'id' : 1 , 'Nom' : 'Bravo' , 'Sou' : 65000 , 'Edat' : 44 } ,
... { 'id' : 2 , 'Nom' : 'Stephen' , 'Sou' : 77000 , 'Edat' : 55 } ,
... { 'id' : 3 , 'Nom' : 'Maria' , 'Sou' : 42000 , 'Edat' : 27 } ,
... { 'id' : 4 , 'Nom' : 'Hawkin' , 'Sou' : 58000 , 'Edat' : 33 } ] )







L'ordre d'inserció té èxit i el missatge de sortida mostra que els registres s'han afegit.



Després d'inserir els registres a la col·lecció de 'dades' del nostre MongoDB, és hora de veure aquests registres al shell. Per tant, executem la instrucció de la funció 'find()' al MongoDB Cli seguida de la funció 'forEach()', prenent l'argument printjson per mostrar un resultat en format JSON. El resultat que es mostra al shell mostra un total de 4 documents de la col·lecció que es mostren a la imatge de sortida següent:



prova > db.data.find ( ) .per cadascú ( printjson )





Provem l'operador '$max' a l'ordre d'actualització de MongoDB per modificar els registres ja inserits. Per tant, updateOne() s'utilitza aquí per modificar només un registre únic de la col·lecció de 'dades', com un registre específic on el camp 'id' té un valor de '2'. L'operador '$max' s'aplica al camp 'Salari' de la recollida de dades per comprovar si el camp 'Salari' té un valor superior a 55000. Si no, actualitzeu el registre amb 55000. El resultat de sortida d'aquest La consulta de funció updateOne() que mostra un recompte de modificacions '0' ja que el registre '2' té menys de 55.000 valors salarials.

prova > db.data.updateOne ( { id: 2 } , { $màx : { Sou: 55000 } } )



Després d'aquesta actualització, intentem la mateixa consulta de funció 'find()' per mostrar el resultat modificat a l'intèrpret d'ordres de línia de MongoDB. Però obtenim la mateixa sortida que teníem abans d'utilitzar la instrucció 'actualització'. No hi va haver cap canvi perquè el valor 77000 és més gran que 55000.

prova > db.data.find ( ) .per cadascú ( printjson )

Provem de nou la mateixa consulta updateOne() amb una petita modificació. Aquesta vegada, provem el valor més gran que és '85000' que el valor '77000' que ja resideix al camp 'Salari' de la recollida de 'dades' per marcar la diferència en la nostra sortida. La sortida mostra el recompte de modificacions '1' aquesta vegada, ja que el valor '85000' substitueix el valor que ja resideix de '77000' al camp després de la comparació només a causa de l'operador '$max' en aquesta consulta.

prova > db.data.updateOne ( { id: 2 } , { $màx : { Sou: 85000 } } )

Després de substituir amb èxit el valor més petit de '77000' per un nou valor de '85000' mitjançant l'operador '$max' de MongoDB, finalment fem servir la funció 'find()' a la instrucció 'db' per comprovar aquesta actualització, si s'ha actualitzat correctament o no. La sortida mostra que el valor del camp 'Salari' d'un segon registre d'aquesta col·lecció està perfectament actualitzat.

prova > db.data.find ( ) .per cadascú ( printjson )

Exemple 2:

Anem a un altre exemple per fer ús de l'operador '$max' a MongoDB. Aquesta vegada, eliminem l'operador '$max' per agrupar i mostrar els registres únics d'una col·lecció si hi ha duplicats per als mateixos valors de camp. Per a això, inserim 2 registres més a la col·lecció de 'dades' d'una base de dades de 'prova'. Aquests registres contenen els 2 mateixos valors al camp 'Nom' que també es troben als 4 registres ja inserits i la resta són diferents. Per inserir els registres, utilitzem la mateixa instrucció 'db' que conté la funció 'insertMany' perquè la col·lecció de 'dades' s'actualitzi.

prova > db.data.insertMany ( [ { 'id' : 5 , 'Nom' : 'Bravo' , 'Sou' : 35000 , 'Edat' : 45 } ,
{ 'id' : 6 , 'Nom' : 'Hawkin' , 'Sou' : 67000 , 'Edat' : 33 } ] )

La instrucció s'executa correctament.

Ara que s'han afegit els 2 registres nous, també podeu mostrar-los mitjançant la mateixa funció 'trobar' a la instrucció 'db' seguida de la funció 'forEach'. La següent sortida de visualització de la imatge mostra els 2 registres nous al final d'aquesta col·lecció:

prova > db.data.find ( ) .per cadascú ( printjson )

Després de mostrar els 6 registres de recollida de 'dades', estem preparats per realitzar-hi la funció d'agregació. Per tant, la funció 'agregat' s'utilitza a la consulta llistada següent. Amb aquesta funció, utilitzem l'operador '$group' per agrupar el registre d'una col·lecció de 'dades' segons els noms únics del camp 'id' i el camp 'Salari'. L'operador '$max' s'aplica al camp 'Salari' dels registres per obtenir els valors màxims que es mostraran. Obteniu el valor més gran del camp Salari d'acord amb els noms duplicats del camp 'Nom' que s'utilitza com a 'identificador' perquè es mostri aquesta agrupació. Es mostren un total de 4 registres. El valor més petit (dels registres duplicats) s'ignora mentre es mostra el valor més gran.

db.data.agregate ( [ { $grup : { _id: ' $Name ' , Sou: { $màx : ' $ Salari ' } } } ] )

Conclusió

El primer paràgraf d'aquesta guia us ajuda a comprendre la importància dels operadors que s'utilitzen a MongoDB, especialment l'operador '$max' i el seu ús a l'intèrpret d'ordres de MongoDB. Aquesta guia conté dos exemples basats en ordres relacionats amb l'operador '$max' per demostrar el seu propòsit. Passant per les il·lustracions de MongoDB, podreu realitzar algunes transaccions útils a la base de dades, tant si es tracta de substituir un registre ja existent per un valor nou com de mostrar els registres agrupant-los mitjançant l'operador '$max'.