Mongodb: hoe de functie $susbtr te gebruiken


U kunt de functie $substr in MongoDB gebruiken om een subtekenreeks uit een tekenreeks te extraheren.

Deze functie gebruikt de volgende basissyntaxis:

 db.myCollection.aggregate([
  { $project : {substring: { $substr : [ " $fullstring ", 0, 4 ] }}}
])

In dit specifieke voorbeeld worden alle vier de tekens uit het veld met de naam ‚fullString‘ geëxtraheerd, beginnend op positie 0.

Het volgende voorbeeld laat zien hoe u deze syntaxis in de praktijk kunt gebruiken bij een verzamelverkoop met de volgende documenten:

 db.sales.insertOne({yearMonth: 201702, amount: 40 })
db.sales.insertOne({yearMonth: 201802, amount: 32 })
db.sales.insertOne({yearMonth: 201806, amount: 19 })
db.sales.insertOne({yearMonth: 201910, amount: 29 })
db.sales.insertOne({yearMonth: 201907, amount: 35 })

Voorbeeld: hoe u de functie $susbtr in MongoDB gebruikt

We kunnen de volgende code gebruiken om de eerste vier tekens uit het veld „yearMonth“ te extraheren en ze weer te geven in een nieuw veld met de naam „year“:

 db.sales.aggregate([
  { $project : {year: { $substr : [ " $yearMonth ", 0, 4 ] }}}
])

Deze code levert het volgende resultaat op:

 { _id: ObjectId("620145544cb04b772fd7a929"), year: '2017' }
{ _id: ObjectId("620145544cb04b772fd7a92a"), year: '2018' }
{ _id: ObjectId("620145544cb04b772fd7a92b"), year: '2018' }
{ _id: ObjectId("620145544cb04b772fd7a92c"), year: '2019' }
{ _id: ObjectId("620145544cb04b772fd7a92d"), year: '2019' }

Houd er rekening mee dat de eerste vier tekens van het veld ‚maandJaar‘ van elk document worden weergegeven in een nieuw veld met de naam ‚jaar‘.

Het is belangrijk op te merken dat deze code alleen de subtekenreeks weergeeft .

Om daadwerkelijk een nieuw veld toe te voegen aan de verzameling die deze subtekenreeks bevat, moeten we de functie $merge als volgt gebruiken:

 db.sales.aggregate([
  { $project : {year: { $substr : [ " $yearMonth ", 0, 4 ] }}},
  { $merge : "sales" }
])

Zo ziet de bijgewerkte collectie er nu uit:

 { _id: ObjectId("620145544cb04b772fd7a929"),
  yearMonth: 201702,
  amount: 40,
  year: '2017' }
{ _id: ObjectId("620145544cb04b772fd7a92a"),
  yearMonth: 201802,
  amount: 32,
  year: '2018' }
{ _id: ObjectId("620145544cb04b772fd7a92b"),
  yearMonth: 201806,
  amount: 19,
  year: '2018' }
{ _id: ObjectId("620145544cb04b772fd7a92c"),
  yearMonth: 201910,
  amount: 29,
  year: '2019' }
{ _id: ObjectId("620145544cb04b772fd7a92d"),
  yearMonth: 201907,
  amount: 35,
  year: '2019' }

Houd er rekening mee dat het nieuwe veld met de titel „jaar“ aan elk document in de verzameling is toegevoegd en dat het de eerste vier tekens van het veld „jaarmaand“ weergeeft.

Opmerking : u kunt hier de volledige documentatie voor de functie $substr vinden.

Aanvullende bronnen

In de volgende tutorials wordt uitgelegd hoe u andere veelvoorkomende bewerkingen in MongoDB kunt uitvoeren:

MongoDB: Hoe u kunt controleren of een veld een string bevat
MongoDB: Tekenreeksen van twee velden samenvoegen
MongoDB: Hoe tekenreeksen te vervangen

Einen Kommentar hinzufügen

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert