MongoDB $Min-operator

Mongodb Min Operator



Als u geen nieuwe gebruiker bent van databases of programmeren, moet u de programma's en zoekopdrachten hebben geprobeerd die de vergelijkingsoperatoren gebruiken - groter dan, kleiner dan, gelijk aan, enz. In MongoDB, waar we de '$set'-operator gebruiken om een specifiek veldrecord bijwerken of een nieuw record aan de database toevoegen, kunnen we hetzelfde resultaat ook bereiken met behulp van de vergelijkingsoperatoren zoals '$min' en '$max'. In MongoDB kan de operator '$ min' worden gebruikt in veel functiequery's om een ​​specifiek veld bij te werken wanneer een nieuwe waarde kleiner is dan de reeds ingevoegde waarde. Het kan ook worden gebruikt om de records van een verzameling in een bepaalde volgorde te groeperen en weer te geven. Deze gids helpt u met verschillende manieren om de '$ min' -operator in MongoDB af te werpen.

Voorbeeld 1:

Beginnend met de eerste illustratie demonstreren we het gebruik van de operator '$ min' in MongoDB om een ​​reeds ingevoegd record bij te werken met behulp van de MongoDB-shell-tool in het Windows-systeem. Daarom moet u enkele records hebben die al aan uw database zijn toegevoegd. We gebruiken dus de query van de functie insertMany() om in totaal 5 records toe te voegen aan de verzameling 'volgorde' van een 'test'-database. Elk van de ingevoegde records die in de volgende afbeelding worden weergegeven, bevat in totaal 4 velden: id, titel, verkoopprijs en belasting. Deze gegevens met 5 records zijn met succes ingevoegd volgens de bijgevoegde uitvoer:

test > db.order.insertMany ( [ { 'ID kaart' :01, 'Titel' : 'Zeep' , 'Verkoopprijs' : 500 , 'Belasting' : 24 } ,
... { 'ID kaart' :02, 'Titel' : 'shampoo' , 'Verkoopprijs' : 700 , 'Belasting' : 27 } ,
... { 'ID kaart' :03, 'Titel' : 'Wasmiddel' , 'Verkoopprijs' : 400 , 'Belasting' : 22 } ,
... { 'ID kaart' :04, 'Titel' : 'Parfum' , 'Verkoopprijs' : 900 , 'Belasting' : 30 } ,
... { 'ID kaart' :05, 'Titel' : 'De nevel' , 'Verkoopprijs' : 850 , 'Belasting' : 27 } ] )







Het is tijd om naar het ingevoegde record in een 'test' -database te kijken. Daarvoor moet u de methode 'find()' samen met de methode 'forEach' afwerpen, waarbij u de 'printjson' als argument in de 'db'-instructie neemt. Met behulp van de verzameling met de naam 'bestelling' hebben we een record op het scherm weergegeven.



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



Het is de hoogste tijd om de '$min'-operator in de 'updateOne'-functiequery te gebruiken om een ​​enkel record bij te werken van de 'order'-verzameling die zojuist is gemaakt. Het 'id'-veld wordt gebruikt als een unieke identificatie om een ​​specifiek record uit een database bij te werken, terwijl de '$min'-operator wordt toegepast op een 'SalePrice'-veld om de waarde bij te werken naar 600 als deze lager is dan de reeds ingevoegde waarde. Het uitvoerbericht geeft aan dat de query is geslaagd, maar dat er geen updates zijn gemaakt.





test > db.order.updateOne ( { ID kaart: 3 } , { $ min : { Verkoopprijs: 600 } } )

De reden waarom er geen update is gemaakt in het veld 'SalePrice' van het derde record, is dat het de waarde '400' bevat, wat kleiner is dan '600'. Daarom werkt de operator '$min' de minimumwaarde van '400' niet bij met een grotere waarde van '600' volgens de volgende bijgevoegde find()-query:



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

Laten we een kleine wijziging aanbrengen in de updatequery om deze keer een andere uitvoer te krijgen. We gebruiken dezelfde 'db'-instructie die de functie 'updateOne' erin gebruikt om een ​​enkel record van '3' te wijzigen. De operator '$min' wordt toegepast op het veld 'SalePrice' om de waarde in te stellen op '300' als de waarde van '300' kleiner is dan de reeds ingevoerde waarde. We weten dat de reeds ingevoegde waarde van '400' van het veld SalePrice groter is dan de nieuwe waarde van '300' die moet worden vergeleken. Dus het vervangt deze keer '400' door '300'. Het uitvoerbericht toont de succesvolle uitvoering van deze query. Het gewijzigde aantal = 1 betekent dat 1 record is gewijzigd.

test > db.order.updateOne ( { ID kaart: 3 } , { $ min : { Verkoopprijs: 300 } } )

Na het weergeven van de records van een 'order' -verzameling uit de 'test' -database in een JSON-indeling via de 'find ()' -functie-instructie in MongoDB-shell, ontdekten we dat het 3e record met succes is bijgewerkt. De waarde van 400 van het veld 'SalePrice' wordt vervangen door de waarde van 300.

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

Voorbeeld 2:

Binnen deze MongoDB-illustratie halen we de records van een specifieke database op door ze te groeperen met betrekking tot de operator '$ min' volgens de minimumwaarde in de records. Stel dat u dezelfde 5 records heeft in de 'order' -verzameling van de 'test' -database van MongoDB en dat u dubbele gegevens nodig heeft in de specifieke velden van een 'test' -database. Hiervoor voegen we meer records toe aan de “order” collectie van de “test” database. Deze keer voegen we de dubbele waarden voor het veld 'Titel' in. Het wordt gebruikt in een '$group'-clausule om een ​​groep unieke waarden te vormen. De volgende uitvoer toont de nieuw ingevoegde 3 extra records voor de 'test' -database. Nu heeft de verzameling 'bestelling' dubbele waarden voor het veld 'Titel' in vergelijking met de 5 oude records. De rest gebruikt hetzelfde.

Na een totaal van 8 records in de 'order' -verzameling van de 'test' -database, is het tijd om de $ min-operator van MongoDB te testen na toepassing op een specifiek veld dat is gegroepeerd door een ander veld. Het bijgevoegde aggregaatcommando gaat hier helemaal over. Het begint met het sleutelwoord 'db', gevolgd door de naam van een verzameling in een bepaalde database en de functie aggreg(). De aggregatiefunctie begint met het gebruik van de $group-clausule van MongoDB die hier speciaal wordt gebruikt om de gegevens in een groep weer te geven met betrekking tot het veld 'Titel' van de database 'test', waarbij het veld 'Titel' als een unieke sleutel wordt gebruikt .

Tegelijkertijd wordt het prijsveld afzonderlijk geïnitialiseerd, waardoor alleen de minimumwaarderecord van het totaal van 8 dezelfde records wordt overgenomen via de '$min'-operator die erop wordt toegepast. De uitvoer van deze query-uitvoering toont de weergave van 5 records met een kleine update in het prijsgedeelte. U kunt zien dat er geen repetitieve records worden weergegeven. Hier worden enkele unieke records met de kleinste waarde weergegeven.

test > db.bestelling.aggregaat ( [ { $groep : { _ID kaart: ' $ Titel ' , prijs: { $ min : ' $Verkoopprijs ' } } } ] )

Gevolgtrekking

Deze gids is een verzameling MongoDB-illustraties om op een eenvoudige manier de operator '$ min' te gebruiken. De introductieparagraaf wordt gebruikt om het doel van het gebruik ervan in MongoDB te bespreken. Het eerste deel van dit artikel bespreekt hoe de operator '$min' werkt en niet werkt voor een enkel record in een database, d.w.z. om een ​​record bij te werken of in te voegen als minimumwaarde. Ook demonstreren de laatste voorbeelden het gebruik ervan om het collectierecord als uniek in de database te groeperen.