Mongodb: jak sprawdzić, czy pole zawiera ciąg znaków
Możesz użyć następującej składni w MongoDB, aby sprawdzić, czy określone pole zawiera określony ciąg znaków:
db.collection.findOne({ name : { $regex : /string/ }})
Poniższe przykłady pokazują, jak używać tej składni w przypadku zespołu windykacyjnego z następującymi dokumentami:
db.teams.insertOne({team: " Mavs ", position: " Guard ", points: 31 }) db.teams.insertOne({team: " Spurs ", position: " Guard ", points: 22 }) db.teams.insertOne({team: " Rockets ", position: " Center ", points: 19 }) db.teams.insertOne({team: " Warriors ", position: " Forward ", points: 26 }) db.teams.insertOne({team: " Cavs ", position: " Guard ", points: 33 })
Przykład 1: Sprawdź, czy pole zawiera ciąg znaków
Możemy użyć poniższego kodu, aby sprawdzić, czy w polu zespołu znajduje się dokument zawierający ciąg „avs”:
db.teams.findOne({ team : { $regex : /avs/ }})
To zapytanie zwraca następujący dokument:
{ _id: ObjectId("618050098ffcfe76d07b1da5"), team: 'Mavs', position: 'Guard', points: 31 }
Należy pamiętać, że funkcja findOne() zwraca pierwszy dokument w kolekcji, który spełnia kryteria zapytania.
Oznacza to, że inne zespoły również mogą mieć ciąg „avs” w nazwie swojego zespołu, ale dokument zawierający nazwę zespołu „Mavs” był po prostu pierwszym.
Przykład 2: Sprawdź, czy pole zawiera ciąg znaków (wielkość liter nie ma znaczenia)
Możemy także użyć i po ciągu znaków, aby dopasować bez uwzględniania wielkości liter .
Załóżmy na przykład, że używamy następującego zapytania:
db.teams.findOne({ team : { $regex : /AVS/i }})
To zapytanie zwraca również następujący dokument:
{ _id: ObjectId("618050098ffcfe76d07b1da5"), team: 'Mavs', position: 'Guard', points: 31 }
Przykład 3: Sprawdź, czy pole zawiera ciąg znaków (brak wyników)
Jeśli pole nie zawiera konkretnego ciągu, którego szukamy, po prostu otrzymamy odpowiednio wartość null .
Załóżmy na przykład, że używamy następującego zapytania:
db.teams.findOne({ team : { $regex : /ricks/ }})
To zapytanie zwraca następujący wynik:
null
Ponieważ żaden dokument nie zawiera ciągu „ricks” w nazwie zespołu, w rezultacie otrzymamy wartość null .
Uwaga : Pełną dokumentację $regex znajdziesz tutaj .
Dodatkowe zasoby
Poniższe samouczki wyjaśniają, jak wykonywać inne typowe operacje w MongoDB:
MongoDB: Jak wyszukać „nie null” w określonym polu
MongoDB: Jak wysyłać zapytania za pomocą wyrażenia regularnego „Lubię to”
MongoDB: Jak dodać nowe pole do kolekcji
MongoDB: Jak usunąć pole z każdego dokumentu