Sök…


Syntax

  • {$ set: {<field1>: <val11, <field2>: <val22, ...}}

parametrar

parametrar Menande
fält namn Fältet kommer att uppdateras: { name : 'Tom'}
targetVaule Värdet tilldelas fältet: {name: 'Tom' }

Anmärkningar

Referens för $ set operator: $ set på officiell webbplats

$ ställ in operatören att uppdatera angivna fält i dokument (er)

I.Overview

En betydande skillnad mellan MongoDB och RDBMS är att MongoDB har många typer av operatörer. En av dem är uppdateringsoperatören, som används i uppdateringsförklaringar.

II. Vad händer om vi inte använder uppdateringsoperatörer?

Anta att vi har en studentsamling för att lagra studentinformation (tabellvy): ange bildbeskrivning här

En dag får du ett jobb som behöver ändra Toms kön från "M" till "F". Det är lätt, eller hur? Så du skriver nedanstående uttalande mycket snabbt baserat på din RDBMS-upplevelse:

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

Låt oss se vad som är resultatet: ange bildbeskrivning här

Vi tappade Toms ålder & namn! Från det här exemplet kan vi veta att hela dokumentet kommer att åsidosättas om det inte finns någon uppdateringsoperatör i uppdateringsförklaringen. Detta är standardbeteendet för MongoDB.

III. Inställd operatör

Om vi bara vill ändra fältet 'sex' i Toms dokument kan vi använda $set att ange vilka fält vi vill uppdatera:

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

Värdet på $set är ett objekt, dess fält står för de fält du vill uppdatera i dokumenten, och värdena för dessa fält är målvärdena.

Så resultatet är rätt nu: ange bildbeskrivning här

Om du vill ändra både 'kön' och 'ålder' samtidigt kan du lägga till dem till $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
Licensierat under CC BY-SA 3.0
Inte anslutet till Stack Overflow