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

Dodaj komentarz

Twój adres e-mail nie zostanie opublikowany. Wymagane pola są oznaczone *