Mongodb: tekenreeksen van twee velden samenvoegen
U kunt de volgende syntaxis gebruiken om tekenreeksen uit twee velden samen te voegen in een nieuw veld in MongoDB:
db.myCollection.aggregate([ { $project : { newfield: { $concat : [ " $field1 ", " - ", " $field2 " ] } } }, { $merge : "myCollection" } ])
In dit specifieke voorbeeld worden de tekenreeksen „field1“ en „field2“ samengevoegd in een nieuw veld met de naam „newfield“ 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({team: " Mavs ", conference: " Western ", points: 31}) db.teams.insertOne({team: " Spurs ", conference: " Western ", points: 22}) db.teams.insertOne({team: " Rockets ", conference: " Western ", points: 19}) db.teams.insertOne({team: " Celtics ", conference: " Eastern ", points: 26}) db.teams.insertOne({team: " Cavs ", conference: " Eastern ", points: 33}) db.teams.insertOne({team: " Nets ", conference: " Eastern ", points: 38})
Voorbeeld: tekenreeksen samenvoegen in MongoDB
We kunnen de volgende code gebruiken om de tekenreeksen uit het veld „team“ en het veld „conferentie“ samen te voegen in een nieuw veld met de naam „teamConf“ en dit veld toe te voegen aan de teamscollectie :
db.teams.aggregate([ { $project : { teamConf: { $concat : [ " $team ", " - ", " $conference " ] } } }, { $merge : "teams" } ])
Zo ziet de bijgewerkte collectie er nu uit:
{ _id: ObjectId("62013d8c4cb04b772fd7a90c"), team: 'Mavs', conference: 'Western', points: 31, teamConf: 'Mavs - Western' } { _id: ObjectId("62013d8c4cb04b772fd7a90d"), team: 'Spurs', conference: 'Western', points: 22, teamConf: 'Spurs - Western' } { _id: ObjectId("62013d8c4cb04b772fd7a90e"), team: 'Rockets', conference: 'Western', points: 19, teamConf: 'Rockets - Western' } { _id: ObjectId("62013d8c4cb04b772fd7a90f"), team: 'Celtics', conference: 'Eastern', points: 26, teamConf: 'Celtics - Eastern' } { _id: ObjectId("62013d8c4cb04b772fd7a910"), team: 'Cavs', conference: 'Eastern', points: 33, teamConf: 'Cavs - Eastern' } { _id: ObjectId("62013d8c4cb04b772fd7a911"), team: 'Nets', conference: 'Eastern', points: 38, teamConf: 'Nets - Eastern' }
Merk op dat elk document een nieuw veld heeft met de titel “teamConf” dat de aaneenschakeling van de velden “team” en “conferentie” bevat.
Voor dit specifieke voorbeeld hebben we ervoor gekozen om de twee tekenreeksen samen te voegen met een koppelteken als scheidingsteken.
We zouden er echter voor kunnen kiezen om de twee strings samen te voegen zonder scheidingswaarden ertussen.
De volgende code laat zien hoe u dit doet:
db.teams.aggregate([ { $project : { teamConf: { $concat : [ " $team ", " $conference " ] } } }, { $merge : "teams" } ])
Zo zou de bijgewerkte collectie eruit zien:
{ _id: ObjectId("62013d8c4cb04b772fd7a90c"), team: 'Mavs', conference: 'Western', points: 31, teamConf: 'MavsWestern' } { _id: ObjectId("62013d8c4cb04b772fd7a90d"), team: 'Spurs', conference: 'Western', points: 22, teamConf: 'SpursWestern' } { _id: ObjectId("62013d8c4cb04b772fd7a90e"), team: 'Rockets', conference: 'Western', points: 19, teamConf: 'RocketWestern' } { _id: ObjectId("62013d8c4cb04b772fd7a90f"), team: 'Celtics', conference: 'Eastern', points: 26, teamConf: 'CelticsEastern' } { _id: ObjectId("62013d8c4cb04b772fd7a910"), team: 'Cavs', conference: 'Eastern', points: 33, teamConf: 'CavsEastern' } { _id: ObjectId("62013d8c4cb04b772fd7a911"), team: 'Nets', conference: 'Eastern', points: 38, teamConf: 'NetsEastern' }
Merk op dat het nieuwe veld met de titel „teamConf“ de aaneenschakeling van de velden „team“ en „conferentie“ bevat, zonder enige scheidingswaarde daartussen.
Opmerking : u kunt de volledige documentatie voor de functie $concat hier 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