$setOnInsert - Amazon DocumentDB

Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.

$setOnInsert

L'$setOnInsertopérateur dans Amazon DocumentDB est utilisé pour définir la valeur d'un champ si un document est inséré, mais cela n'a aucun effet si le document est mis à jour.

Paramètres

  • field: Le champ à définir.

  • value: valeur à attribuer au champ.

Exemple (MongoDB Shell)

L'exemple suivant illustre l'utilisation de l'$setOnInsertopérateur dans Amazon DocumentDB. Cela crée un nouveau document s'il n'existe pas déjà, mais cela n'a aucun effet si le document est mis à jour.

Création d'exemples de documents

db.users.insertOne({ _id: 1, name: "John Doe", age: 30 })

Exemple de requête 1 - Mettre à jour un document existant

db.users.update( { _id: 1 }, { $set: { age: 31 }, $setOnInsert: { createdAt: new Date() } }, { upsert: true } )

Sortie 1

{ _id: 1, name: "John Doe", age: 31 }

La sortie indique que le document a été mis à jour, mais le createdAt champ n'a PAS été ajouté car le document existait déjà. L'$setOnInsertopérateur ne s'applique que lors de l'insertion de nouveaux documents.

Exemple de requête 2 - Insérer un nouveau document (upsert)

db.users.update( { _id: 2 }, { $set: { name: "Jane Smith", age: 25 }, $setOnInsert: { createdAt: new Date() } }, { upsert: true } )

Produit 2

{ _id: 2, name: "Jane Smith", age: 25, createdAt: ISODate("2025-10-31T09:57:52.459Z") } }

Exemples de code

Pour afficher un exemple de code relatif à l'utilisation de la $setOnInsert commande, choisissez l'onglet correspondant à la langue que vous souhaitez utiliser :

Node.js
const { MongoClient } = require('mongodb'); async function updateWithSetOnInsert() { const client = await MongoClient.connect('mongodb://<username>:<password>@<cluster-endpoint>:27017/?tls=true&tlsCAFile=global-bundle.pem&replicaSet=rs0&readPreference=secondaryPreferred&retryWrites=false'); const db = client.db('test'); const users = db.collection('users'); await users.updateOne( { _id: 1 }, { $set: { age: 31 }, $setOnInsert: { createdAt: new Date() } }, { upsert: true } ); const updatedUser = await users.findOne({ _id: 1 }); console.log(updatedUser); await client.close(); } updateWithSetOnInsert();
Python
from pymongo import MongoClient def update_with_set_on_insert(): client = MongoClient('mongodb://<username>:<password>@<cluster-endpoint>:27017/?tls=true&tlsCAFile=global-bundle.pem&replicaSet=rs0&readPreference=secondaryPreferred&retryWrites=false') db = client['test'] users = db['users'] result = users.update_one( {'_id': 1}, { '$set': {'age': 31}, '$setOnInsert': {'createdAt': datetime.datetime.now()} }, upsert=True ) updated_user = users.find_one({'_id': 1}) print(updated_user) client.close() update_with_set_on_insert()