Mongodb: jak wstawić, jeśli nie istnieje


Możesz użyć poniższej składni, aby wstawić dokument do kolekcji w MongoDB tylko wtedy, gdy jeszcze nie istnieje:

 db.teams.update(
	{
	  team: 'Hornets'
	}, 
	 {
	  $setOnInsert : {team: 'Hornets', points: '58', rebounds: '20'}
	 },
	 {upsert: true }
)

Ten konkretny kod sprawdza, czy pole „zespół” ma wartość „Szerszenie”. Jeśli ta wartość istnieje, nic się nie stanie.

Jeżeli jednak tej wartości nie ma to wstawi dokument z określonymi wartościami dla pól „drużyna”, „punkty” i „zbiórki”.

Poniższy przykład pokazuje, jak zastosować tę składnię w praktyce.

Przykład: Wstaw, jeśli nie istnieje w MongoDB

Załóżmy, że mamy kolekcję o nazwie zespoły zawierającą następujące dokumenty:

 db.teams.insertOne({team: " Mavs ", points: 30, rebounds: 8})
db.teams.insertOne({team: " Spurs ", points: 35, rebounds: 12})
db.teams.insertOne({team: " Rockets ", points: 20, rebounds: 7})
db.teams.insertOne({team: " Warriors ", points: 25, rebounds: 5})
db.teams.insertOne({team: " Cavs ", points: 23, rebounds: 9})

Załóżmy, że używamy następującego kodu, aby spróbować wstawić dokument dla zespołu „Mavs”:

 db.teams.update(
	{
	  team: 'Mavs'
	}, 
	 {
	  $setOnInsert : {team: 'Mavs', points: '58', rebounds: '20'}
	 },
	 {upsert: true }
)

Pole „zespół” zawiera już informacje dla „Mavów”, żaden z dokumentów nie zostanie zmodyfikowany.

Załóżmy jednak, że używamy poniższego kodu do wstawienia dokumentu dla zespołu „Hornets”:

 db.teams.update(
	{
	  team: 'Hornets'
	}, 
	 {
	  $setOnInsert : {team: 'Hornets', points: '58', rebounds: '20'}
	 },
	 {upsert: true }
)

Ponieważ pole „zespół” nie zawiera już informacji dla „Szerszenia”, do kolekcji zostanie dodany nowy dokument z wartościami, które określiliśmy dla każdego pola.

Tak wygląda zaktualizowana kolekcja:

 { _id: ObjectId("6203df361e95a9885e1e764a"),
  team: 'Mavs',
  points: 30,
  rebounds: 8 }
{ _id: ObjectId("6203df361e95a9885e1e764b"),
  team: 'Spurs',
  points: 35,
  rebounds: 12 }
{ _id: ObjectId("6203df361e95a9885e1e764c"),
  team: 'Rockets',
  points: 20,
  rebounds: 7 }
{ _id: ObjectId("6203df361e95a9885e1e764d"),
  team: 'Warriors',
  points: 25,
  rebounds: 5 }
{ _id: ObjectId("6203df361e95a9885e1e764e"),
  team: 'Cavs',
  points: 23,
  rebounds: 9 }
{ _id: ObjectId("6203e17de42bfba74fc73325"),
  team: 'Hornets',
  dots: '58',
  rebounds: '20' }

Uwaga, dodano nowy dokument dla zespołu „Szerszenie”.

Uwaga : Pełną dokumentację funkcji $upsert znajdziesz tutaj .

Dodatkowe zasoby

Poniższe samouczki wyjaśniają, jak wykonywać inne typowe operacje w MongoDB:

MongoDB: Jak dodać nowe pole
MongoDB: Jak usunąć pole
MongoDB: Jak policzyć różne wartości w polu

Dodaj komentarz

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