$setOnInsert - Amazon DocumentDB

Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.

$setOnInsert

Der $setOnInsert Operator in Amazon DocumentDB wird verwendet, um den Wert eines Felds festzulegen, wenn ein Dokument eingefügt wird. Er hat jedoch keine Auswirkung, wenn das Dokument aktualisiert wird.

Parameter

  • field: Das Feld, das festgelegt werden soll.

  • value: Der Wert, der dem Feld zugewiesen werden soll.

Beispiel (MongoDB Shell)

Das folgende Beispiel zeigt die Verwendung des $setOnInsert Operators in Amazon DocumentDB. Es erstellt ein neues Dokument, wenn das Dokument noch nicht existiert, hat aber keine Auswirkung, wenn das Dokument aktualisiert wird.

Erstellen Sie Beispieldokumente

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

Abfragebeispiel 1 — Bestehendes Dokument aktualisieren

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

Ausgabe 1

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

Die Ausgabe zeigt, dass das Dokument aktualisiert wurde, das createdAt Feld jedoch NICHT hinzugefügt wurde, da das Dokument bereits vorhanden war. Der $setOnInsert Operator gilt nur beim Einfügen neuer Dokumente.

Abfragebeispiel 2 — Neues Dokument einfügen (upsert)

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

Ausgabe 2

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

Codebeispiele

Um ein Codebeispiel für die Verwendung des $setOnInsert Befehls anzuzeigen, wählen Sie die Registerkarte für die Sprache, die Sie verwenden möchten:

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()