Opslaan versus invoegen:
In uw gegeven voorbeelden is het gedrag in wezen hetzelfde.
save
gedraagt zich anders als het wordt doorgegeven met een "_id" parameter.
Voor opslaan, Als het document _id
. bevat , het zal het opvragen van de collectie op de _id
veld, zo niet, dan wordt het ingevoegd.
Als een document niet bestaat met de opgegeven _id-waarde, voert de methode save() een invoeging uit met de opgegeven velden in het document.
Als er een document bestaat met de opgegeven _id-waarde, voert de methode save() een update uit, waarbij alle velden in het bestaande record worden vervangen door de velden uit het document.
Opslaan versus bijwerken :
update
wijzigt een bestaand document dat overeenkomt met uw queryparameters. Als er niet zo'n overeenkomend document is, dan is dat het moment waarop upsert
komt in beeld.
upsert : false
:Er gebeurt niets als een dergelijk document niet bestaatupsert : true
:Er wordt een nieuw document gemaakt met een inhoud die gelijk is aan de queryparameters en de updateparameters
save
:Staat geen query-parameters toe. if _id
bestaat en er is een overeenkomend document met dezelfde _id
, het vervangt het. Als er geen _id is opgegeven/geen overeenkomend document, wordt het document als een nieuw ingevoegd.