$mul - 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.

$mul

L'$mulopérateur dans Amazon DocumentDB est utilisé pour multiplier la valeur d'un champ par un nombre spécifié. Cela peut être utile pour mettre à jour plusieurs documents de manière atomique et cohérente, par exemple pour mettre à jour les miles de vol en fonction du statut d'une carte de crédit.

Paramètres

  • field: Le champ à multiplier.

  • multiplier: le nombre par lequel multiplier la valeur du champ.

Exemple (MongoDB Shell)

Cet exemple montre comment utiliser l'$mulopérateur pour doubler la flight_miles valeur de tous les documents où se trouve le credit_card champtrue.

Création d'exemples de documents

db.miles.insertMany([ { "_id": 1, "member_since": new Date("1987-01-01"), "credit_card": false, "flight_miles": [1205, 2560, 880] }, { "_id": 2, "member_since": new Date("1982-01-01"), "credit_card": true, "flight_miles": [2410, 5120, 1780, 5560] }, { "_id": 3, "member_since": new Date("1999-01-01"), "credit_card": true, "flight_miles": [2410, 1760] } ]);

Exemple de requête

db.miles.update( { "credit_card": { "$eq": true } }, { "$mul": { "flight_miles.$[]": NumberInt(2) } }, { "multi": true } );

Sortie

{ "_id" : 1, "member_since" : ISODate("1987-01-01T00:00:00Z"), "credit_card" : false, "flight_miles" : [ 1205, 2560, 880 ] } { "_id" : 2, "member_since" : ISODate("1982-01-01T00:00:00Z"), "credit_card" : true, "flight_miles" : [ 4820, 10240, 3560, 11120 ] } { "_id" : 3, "member_since" : ISODate("1999-01-01T00:00:00Z"), "credit_card" : true, "flight_miles" : [ 4820, 3520 ] }

Pour les clients détenteurs d'une carte de crédit, leurs miles de vol ont été doublés.

L'opérateur de tableau $[] positionnel est utilisé pour appliquer l'$mulopération à chaque élément du flight_miles tableau.

Exemples de code

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

Node.js
const { MongoClient } = require('mongodb'); async function updateFlightMiles() { 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 collection = db.collection('miles'); await collection.updateMany( { credit_card: true }, { $mul: { 'flight_miles.$[]': 2 } } ); const documents = await collection.find().toArray(); console.log(documents); await client.close(); } updateFlightMiles();
Python
from pymongo import MongoClient def update_flight_miles(): client = MongoClient('mongodb://<username>:<password>@<cluster-endpoint>:27017/?tls=true&tlsCAFile=global-bundle.pem&replicaSet=rs0&readPreference=secondaryPreferred&retryWrites=false') db = client.test collection = db.miles collection.update_many( {'credit_card': True}, {'$mul': {'flight_miles.$[]': 2}} ) documents = list(collection.find()) print(documents) client.close() update_flight_miles()