MongoDB $Max-operator

Mongodb Max Operator



MongoDB bedacht veel operators om speciale transacties uit te voeren, zoals het bijwerken van de records, het toevoegen van een nieuw record en het weergeven van de records onder een bepaalde voorwaarde. Een van die operators is de '$max'-operator die wordt gebruikt om te controleren op de grootste waarde in het record. Afgezien daarvan kunnen we het gebruiken om de kleinste waarde bij te werken met een nieuwe grootste waarde nadat we ze hebben vergeleken in de functie-instructie 'update'. Het andere gebruik van de operator '$ max' is om de records van een bepaalde verzameling te groeperen en weer te geven op een manier dat alleen de grootste waarde kan worden weergegeven terwijl de kleinste waarde wordt genegeerd wanneer er enkele dubbele records in de database zijn. In deze handleiding gaan we eenvoudige queryvoorbeelden gebruiken om het eerder genoemde gebruik van de operator '$ max' in het MongoDB-opdrachtregelhulpprogramma op ons Windows-platform te bespreken.

Voorbeeld 1:

Beginnend met de te bespreken illustratie en hoe de operator '$ max' werkt in de MongoDB-shell, hebben we een verzameling met de naam 'data' nodig die al moet worden gemaakt. Om deze verzameling te maken, moeten we er rechtstreeks enkele records aan toevoegen zonder gebruik te maken van een 'maak' -instructie. De invoeginstructie is voldoende om een ​​verzameling te maken en de records erin toe te voegen. We gebruiken de functie 'insertMany' in de query om vier records toe te voegen, elk met 4 velden van verschillende typen.

test > db.data.insertMany ( [ { 'ID kaart' : een , 'Naam' : 'Bravo' , 'Salaris' : 65000 , 'Leeftijd' : 44 } ,
... { 'ID kaart' : 2 , 'Naam' : 'Stefaan' , 'Salaris' : 77000 , 'Leeftijd' : 55 } ,
... { 'ID kaart' : 3 , 'Naam' : 'Maria' , 'Salaris' : 42000 , 'Leeftijd' : 27 } ,
... { 'ID kaart' : 4 , 'Naam' : 'Havik' , 'Salaris' : 58000 , 'Leeftijd' : 33 } ] )







De insert-opdracht is succesvol en het uitvoerbericht geeft aan dat de records zijn toegevoegd.



Na het invoegen van de records in de 'data' -verzameling van onze MongoDB, is het tijd om die records op de shell te zien. We voeren dus de functie-instructie 'find()' uit op de MongoDB Cli gevolgd door de functie 'forEach()', waarbij we het argument printjson gebruiken om een ​​resultaat in JSON-indeling weer te geven. Het resultaat dat in de shell wordt weergegeven, toont in totaal 4 documenten in de verzameling die worden weergegeven in de volgende uitvoerafbeelding:



test > db.data.find ( ) .voor elk ( printjson )





Laten we de operator '$ max' uitproberen in de update-opdracht van MongoDB om de reeds ingevoegde records te wijzigen. De updateOne() wordt hier dus gebruikt om slechts één record van 'gegevens'-verzameling te wijzigen, zoals een specifiek record waarbij het veld 'id' de waarde '2' heeft. De operator '$max' wordt toegepast op het veld 'Salaris' van de verzameling 'gegevens' om te controleren of het veld 'Salaris' een waarde heeft die groter is dan 55000. Als dit niet het geval is, werkt u het record bij met 55000. Het uitvoerresultaat hiervoor updateOne() functiequery die een '0' wijzigingstelling toont aangezien record '2' een salariswaarde van minder dan 55000 heeft.

test > db.data.updateOne ( { ID kaart: 2 } , { maximaal $ : { Salaris: 55000 } } )



Na deze update proberen we dezelfde 'find()'-functiequery om het gewijzigde resultaat weer te geven op de MongoDB-opdrachtregelshell. Maar we krijgen dezelfde uitvoer die we kregen voordat we de 'update' -instructie gebruikten. Er was geen verandering omdat de waarde 77000 groter is dan 55000.

test > db.data.find ( ) .voor elk ( printjson )

Laten we dezelfde updateOne()-query nogmaals proberen met een kleine aanpassing. Deze keer proberen we de grotere waarde die '85000' is dan de waarde '77000' die al aanwezig is in het veld 'Salaris' van de verzameling 'gegevens' om een ​​verschil te maken in onze output. De uitvoer toont dit keer het aantal wijzigingen '1', aangezien de waarde '85000' de reeds bestaande waarde van '77000' in het veld vervangt nadat de vergelijking plaatsvond, alleen vanwege de operator '$ max' in deze query.

test > db.data.updateOne ( { ID kaart: 2 } , { maximaal $ : { Salaris: 85000 } } )

Na het succesvol vervangen van de kleinere waarde van '77000' door een nieuwe waarde van '85000' via de '$max' operator van MongoDB, gebruiken we uiteindelijk de 'find()' functie in de 'db' instructie om te controleren op deze update, of het nu succesvol is bijgewerkt of niet. De uitvoer laat zien dat de waarde in het veld 'Salaris' van een 2e record in deze verzameling perfect is bijgewerkt.

test > db.data.find ( ) .voor elk ( printjson )

Voorbeeld 2:

Laten we naar een ander voorbeeld gaan om gebruik te maken van de operator '$ max' in MongoDB. Deze keer hebben we de operator '$ max' verwijderd om de unieke records van een verzameling te groeperen en weer te geven als er duplicaten zijn voor dezelfde veldwaarden. Hiervoor voegen we nog 2 records toe aan de 'data' -verzameling van een 'test' -database. Deze records bevatten de 2 dezelfde waarden in het veld 'Naam' die ook in de reeds ingevoegde 4 records staan ​​en de rest is verschillend. Om de records in te voegen, gebruiken we dezelfde 'db' -instructie die de 'insertMany' -functie bevat om de 'gegevens' -verzameling bij te werken.

test > db.data.insertMany ( [ { 'ID kaart' : 5 , 'Naam' : 'Bravo' , 'Salaris' : 35000 , 'Leeftijd' : Vier vijf } ,
{ 'ID kaart' : 6 , 'Naam' : 'Havik' , 'Salaris' : 67000 , 'Leeftijd' : 33 } ] )

De instructie is succesvol uitgevoerd.

Nu de 2 nieuwe records zijn toegevoegd, kunt u ze ook weergeven met dezelfde 'find' -functie in de 'db' -instructie, gevolgd door de 'forEach' -functie. De volgende weergave-uitvoer in de afbeelding toont de 2 nieuwe records aan het einde van deze verzameling:

test > db.data.find ( ) .voor elk ( printjson )

Na het weergeven van de 6 records van 'gegevens' -verzameling, zijn we klaar om de aggregatiefunctie erop uit te voeren. Daarom wordt de 'aggregate' -functie gebruikt in de volgende vermelde query. Met deze functie gebruiken we de operator '$group' om het record van een 'data'-verzameling te groeperen volgens de unieke namen van het veld 'id' en het veld 'Salaris'. De operator '$max' wordt toegepast op het veld 'Salaris' van de records om de maximale waarden weer te geven. Haal de grootste waarde uit het veld 'Salaris' volgens de dubbele namen in het veld 'Naam' dat wordt gebruikt als 'id' om deze groepering weer te geven. Er worden in totaal 4 records weergegeven. De kleinste waarde (uit de dubbele records) wordt genegeerd terwijl de grootste waarde wordt weergegeven.

db.data.aggregaat ( [ { $ groep : { _ID kaart: ' $Naam ' , Salaris: { maximaal $ : ' $Salaris ' } } } ] )

Gevolgtrekking

De eerste alinea van deze handleiding helpt u het belang te begrijpen van operators die worden gebruikt in MongoDB, met name de operator '$ max' en het gebruik ervan in de MongoDB-shell. Deze handleiding bevat twee op opdrachten gebaseerde voorbeelden die verband houden met de operator '$ max' om het doel ervan te demonstreren. Als u de MongoDB-illustraties doorloopt, kunt u enkele nuttige transacties in de database uitvoeren, of het nu gaat om het vervangen van een reeds bestaand record door een nieuwe waarde of het weergeven van de records door ze te groeperen via de operator '$ max'.