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