Mongodb: jak sprawdzić, czy pole istnieje
Możesz użyć następujących metod, aby sprawdzić, czy pole istnieje w kolekcji w MongoDB:
Metoda 1: Sprawdź, czy pole istnieje
db.myCollection.find({ " myField ": { $exists : true } })
Ta metoda sprawdza, czy w kolekcji o nazwie myCollection istnieje element „myField”. Jeśli tak, zwraca wszystkie dokumenty zawierające nazwę pola. Jeśli nie, nic nie zwraca.
Metoda 2: Sprawdź, czy osadzone pole istnieje
db.myCollection.find({ " myField.embeddedField ": { $exists : true } })
Metoda ta sprawdza, czy nazwa pola „embeddedField” w polu „myField” istnieje w kolekcji o nazwie myCollection . Jeśli tak, zwraca wszystkie dokumenty zawierające nazwę pola. Jeśli nie, nic nie zwraca.
Poniższe przykłady pokazują, jak zastosować każdą metodę w praktyce w przypadku zespołu windykacyjnego posiadającego następujące dokumenty:
db.teams.insertOne({team: "Mavs", class: {conf: "Western", div: "A"}, points: 31 }) db.teams.insertOne({team: "Spurs", class: {conf: "Western", div: "A"}, points: 22 }) db.teams.insertOne({team: "Jazz", class: {conf: "Western", div: "B"}, points: 19 }) db.teams.insertOne({team: "Celtics", class: {conf: "Eastern", div: "C"}, points: 26 })
Przykład 1: Sprawdź, czy pole istnieje
Poniższy kod pokazuje, jak sprawdzić, czy w kolekcji zespołów istnieje pole o nazwie „points”:
db.teams.find({ " points ": { $exists : true } })
To zapytanie zwraca następujące dokumenty:
{ _id: ObjectId("6203d10c1e95a9885e1e7637"), team: 'Mavs', class: { conf: 'Western', div: 'A' }, points: 31 } { _id: ObjectId("6203d10c1e95a9885e1e7638"), team: 'Spurs', class: { conf: 'Western', div: 'A' }, points: 22 } { _id: ObjectId("6203d10c1e95a9885e1e7639"), team: 'Jazz', class: { conf: 'Western', div: 'B' }, points: 19 } { _id: ObjectId("6203d10c1e95a9885e1e763a"), team: 'Celtics', class: { conf: 'Eastern', div: 'C' }, points: 26 }
Ponieważ istnieje nazwa pola „punkty”, zwracany jest każdy dokument zawierający pole „punkty”.
Załóżmy, że zamiast tego sprawdzamy, czy nazwa pola „kradnie” istnieje w kolekcji zespołów :
db.teams.find({ " steals ": { $exists : true } })
Ponieważ to pole nie istnieje, nie są zwracane żadne dane wyjściowe.
Przykład 2: Sprawdź, czy istnieje osadzone pole
Poniższy kod pokazuje, jak sprawdzić, czy wbudowana nazwa pola „div” istnieje w polu „class” kolekcji zespołów :
db.teams.find({ " class.div ": { $exists : true } })
To zapytanie zwraca następujące dokumenty:
{ _id: ObjectId("6203d10c1e95a9885e1e7637"), team: 'Mavs', class: { conf: 'Western', div: 'A' }, points: 31 } { _id: ObjectId("6203d10c1e95a9885e1e7638"), team: 'Spurs', class: { conf: 'Western', div: 'A' }, points: 22 } { _id: ObjectId("6203d10c1e95a9885e1e7639"), team: 'Jazz', class: { conf: 'Western', div: 'B' }, points: 19 } { _id: ObjectId("6203d10c1e95a9885e1e763a"), team: 'Celtics', class: { conf: 'Eastern', div: 'C' }, points: 26 }
Ponieważ nazwa osadzonego pola „div” istnieje w polu „class”, zwracany jest każdy dokument zawierający osadzone pole „div”.
Załóżmy, że zamiast tego sprawdzimy, czy wbudowana nazwa pola „division” istnieje w polu „class” w kolekcji zespołów :
db.teams.find({ " class.division ": { $exists : true } })
Ponieważ to wbudowane pole nie istnieje, nie są zwracane żadne dane wyjściowe.
Uwaga : Pełną dokumentację funkcji $exists można znaleźć tutaj .
Dodatkowe zasoby
Poniższe samouczki wyjaśniają, jak wykonywać inne typowe operacje w MongoDB:
MongoDB: Jak wyświetlić listę wszystkich nazw pól
MongoDB: Jak zmienić nazwy pól
MongoDB: Jak dodać nowe pola
MongoDB: Jak usunąć pola