Mongodb: so verketten sie zeichenfolgen aus zwei feldern
Sie können die folgende Syntax verwenden, um Zeichenfolgen aus zwei Feldern in einem neuen Feld in MongoDB zu verketten:
db.myCollection.aggregate([ { $project : { newfield: { $concat : [ " $field1 ", " - ", " $field2 " ] } } }, { $merge : "myCollection" } ])
In diesem speziellen Beispiel werden die Zeichenfolgen „field1“ und „field2“ zu einem neuen Feld mit dem Namen „newfield“ verkettet und das neue Feld der Sammlung mit dem Namen myCollection hinzugefügt.
Das folgende Beispiel zeigt, wie diese Syntax in der Praxis mit einem Inkassoteam mit den folgenden Dokumenten verwendet wird :
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})
Beispiel: Verketten von Strings in MongoDB
Wir können den folgenden Code verwenden, um die Zeichenfolgen aus den Feldern „team“ und „conference“ in einem neuen Feld namens „teamConf“ zu verketten und dieses Feld zur Teams- Sammlung hinzuzufügen:
db.teams.aggregate([ { $project : { teamConf: { $concat : [ " $team ", " - ", " $conference " ] } } }, { $merge : "teams" } ])
So sieht die aktualisierte Sammlung nun aus:
{ _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' }
Beachten Sie, dass jedes Dokument über ein neues Feld mit dem Titel „teamConf“ verfügt, das die Verkettung der Felder „Team“ und „Konferenz“ enthält.
Für dieses spezielle Beispiel haben wir uns dafür entschieden, die beiden Zeichenfolgen mit einem Bindestrich als Trennzeichen zu verketten.
Wir könnten uns jedoch dafür entscheiden, die beiden Zeichenfolgen ohne Trennwerte dazwischen zu verketten.
Der folgende Code zeigt, wie das geht:
db.teams.aggregate([ { $project : { teamConf: { $concat : [ " $team ", " $conference " ] } } }, { $merge : "teams" } ])
So würde die aktualisierte Sammlung aussehen:
{ _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' }
Beachten Sie, dass das neue Feld mit dem Titel „teamConf“ die Verkettung der Felder „team“ und „conference“ ohne einen Trennwert zwischen ihnen enthält.
Hinweis : Die vollständige Dokumentation für die Funktion $concat finden Sie hier .
Zusätzliche Ressourcen
In den folgenden Tutorials wird erläutert, wie Sie andere gängige Vorgänge in MongoDB ausführen:
MongoDB: So überprüfen Sie, ob das Feld eine Zeichenfolge enthält
MongoDB: So fügen Sie ein neues Feld hinzu
MongoDB: So löschen Sie ein Feld