Mongodb: jak podzielić ciąg na tablicę podciągów
Możesz użyć następującej składni, aby podzielić ciąg na tablicę podciągów w MongoDB:
db.myCollection.aggregate([ { $project : { split_field: { $split : [ " $field1 ", " " ] } } }, { $merge : "myCollection" } ])
Ten konkretny przykład dzieli ciąg „field1” na podstawie spacji na nowe pole o nazwie „split_field” i dodaje nowe pole do kolekcji o nazwie myCollection .
Poniższy przykład pokazuje, jak zastosować tę składnię w praktyce w przypadku zespołu windykacyjnego z następującymi dokumentami:
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})
Przykład: Podziel ciąg na tablicę podciągów w MongoDB
Możemy użyć poniższego kodu, aby podzielić ciąg znaków w kolumnie „nazwa” na tablicę ciągów i wyświetlić wyniki w nowym polu o nazwie „nazwa_podziału” w kolekcji zespołów :
db.teams.aggregate([ { $project : { split_name: { $split : [ " $name ", " " ] } } }, { $merge : "teams" } ])
Tak wygląda teraz zaktualizowana kolekcja:
{ _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'] }
Należy pamiętać, że każdy dokument ma nowe pole o nazwie „nazwa_podziału”, które zawiera tablicę podciągów pola „nazwa”.
W tym konkretnym przykładzie zdecydowaliśmy się podzielić oryginalny ciąg znaków, używając pustej spacji jako separatora.
Jeśli ciąg znaków jest oddzielony innym ogranicznikiem (np. łącznikiem, ukośnikiem, dwukropkiem itp.), po prostu użyj tego ogranicznika w funkcji $split .
Uwaga : Pełną dokumentację funkcji $split znajdziesz tutaj .
Dodatkowe zasoby
Poniższe samouczki wyjaśniają, jak wykonywać inne typowe operacje w MongoDB:
MongoDB: Jak sprawdzić, czy pole zawiera ciąg znaków
MongoDB: Jak dodać nowe pole
MongoDB: Jak usunąć pole