Mongodb: hoe een string in een array van substrings te splitsen
U kunt de volgende syntaxis gebruiken om een tekenreeks in een reeks subtekenreeksen in MongoDB te splitsen:
db.myCollection.aggregate([ { $project : { split_field: { $split : [ " $field1 ", " " ] } } }, { $merge : "myCollection" } ])
In dit specifieke voorbeeld wordt de tekenreeks „field1“ op basis van spaties gesplitst in een nieuw veld met de naam „split_field“ en wordt het nieuwe veld toegevoegd aan de verzameling met de naam myCollection .
Het volgende voorbeeld laat zien hoe u deze syntaxis in de praktijk kunt gebruiken met een incassoteam met de volgende documenten:
db.teams.insertOne({name: " Dallas Mavs ", points: 31}) db.teams.insertOne({name: " San Antonio Spurs ", points: 22}) db.teams.insertOne({name: " Houston Rockets ", points: 19}) db.teams.insertOne({name: " Boston Celtics ", points: 26}) db.teams.insertOne({name: " Cleveland Cavs ", points: 33})
Voorbeeld: Splits een string in een array van substrings in MongoDB
We kunnen de volgende code gebruiken om de tekenreeks in de kolom ’naam‘ op te splitsen in een reeks tekenreeksen en de resultaten weer te geven in een nieuw veld met de naam ’split_name‘ in de teamscollectie :
db.teams.aggregate([ { $project : { split_name: { $split : [ " $name ", " " ] } } }, { $merge : "teams" } ])
Zo ziet de bijgewerkte collectie er nu uit:
{ _id: ObjectId("62014a924cb04b772fd7a938"), name: 'Dallas Mavs', points: 31, split_name: ['Dallas', 'Mavs'] } { _id: ObjectId("62014a924cb04b772fd7a939"), name: 'San Antonio Spurs', points: 22, split_name: ['San', 'Antonio', 'Spurs'] } { _id: ObjectId("62014a924cb04b772fd7a93a"), name: 'Houston Rockets', points: 19, split_name: ['Houston', 'Rockets'] } { _id: ObjectId("62014a924cb04b772fd7a93b"), name: 'Boston Celtics', points: 26, split_name: ['Boston', 'Celtics'] } { _id: ObjectId("62014a924cb04b772fd7a93c"), name: 'Cleveland Cavs', points: 33, split_name: ['Cleveland', 'Cavs'] }
Houd er rekening mee dat elk document een nieuw veld heeft met de naam „split_name“, dat een reeks subtekenreeksen van het veld „naam“ bevat.
Voor dit specifieke voorbeeld hebben we ervoor gekozen om de originele tekenreeks te splitsen met een spatie als scheidingsteken.
Als de tekenreeks wordt gescheiden door een ander scheidingsteken (zoals een koppelteken, schuine streep, dubbele punt, enzovoort), gebruikt u dat scheidingsteken in de functie $split .
Opmerking : u kunt hier de volledige documentatie voor de functie $split 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: Hoe een nieuw veld toe te voegen
MongoDB: Hoe een veld te verwijderen