Szukaj…


Składnia

  • {$ set: {<field1>: <value1>, <field2>: <value2>, ...}}

Parametry

parametry Znaczenie
Nazwa pola Pole zostanie zaktualizowane: { name : „Tom”}
targetVaule Wartość zostanie przypisana do pola: {name: „Tom” }

Uwagi

Referencje dla operatora $ set : $ set na oficjalnej stronie internetowej

$ ustaw operator, aby aktualizował określone pola w dokumentach

I. Przegląd

Istotną różnicą między MongoDB i RDBMS jest to, że MongoDB ma wiele rodzajów operatorów. Jednym z nich jest operator aktualizacji, który jest używany w instrukcjach aktualizacji.

II. Co się stanie, jeśli nie użyjemy operatorów aktualizacji?

Załóżmy, że mamy kolekcję studentów do przechowywania informacji o studentach (widok tabeli): wprowadź opis zdjęcia tutaj

Pewnego dnia dostajesz pracę, która musi zmienić płeć Toma z „M” na „F”. To proste, prawda? Więc bardzo szybko piszesz poniższe oświadczenie w oparciu o twoje doświadczenia z RDBMS:

db.student.update(
    {name: 'Tom'}, // query criteria
    {sex: 'F'} // update action
);

Zobaczmy, jaki jest wynik: wprowadź opis zdjęcia tutaj

Straciliśmy wiek i imię Toma! Z tego przykładu możemy wiedzieć, że cały dokument zostanie zastąpiony, jeśli nie będzie żadnego operatora aktualizacji w instrukcji aktualizacji. Jest to domyślne zachowanie MongoDB.

III. $ Set operator

Jeśli chcemy zmienić tylko pole „płci” w dokumencie Toma, możemy użyć $set do określenia, które pola chcemy zaktualizować:

db.student.update(
    {name: 'Tom'}, // query criteria
    {$set: {sex: 'F'}} // update action
);

Wartość $set jest obiektem, jego pola oznaczają pola, które chcesz zaktualizować w dokumentach, a wartości tych pól są wartościami docelowymi.

Tak więc wynik jest teraz poprawny: wprowadź opis zdjęcia tutaj

Ponadto, jeśli chcesz zmienić jednocześnie „płeć” i „wiek”, możesz dołączyć je do $set :

db.student.update(
    {name: 'Tom'}, // query criteria
    {$set: {sex: 'F', age: 40}} // update action
);


Modified text is an extract of the original Stack Overflow Documentation
Licencjonowany na podstawie CC BY-SA 3.0
Nie związany z Stack Overflow