$switch - Amazon DocumentDB

Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.

$switch

Novità dalla versione 4.0.

Non supportato dal cluster Elastic.

L'$switchoperatore è un operatore di espressione condizionale in Amazon DocumentDB che consente di valutare un elenco di espressioni di casi e restituire il valore del primo caso che restituisce true o un valore predefinito se nessuna espressione di case è vera.

Parametri

  • branches: Una matrice di documenti, ognuno dei quali contiene un campo case che contiene l'espressione booleana da valutare e un campo then che contiene il valore da restituire se l'espressione case è vera.

  • default: (opzionale) Il valore da restituire se nessuna delle espressioni maiuscole è vera.

Esempio (MongoDB Shell)

L'esempio seguente dimostra l'utilizzo dell'$switchoperatore per determinare il costo di spedizione di un ordine in base al totale dell'ordine.

Crea documenti di esempio

db.orders.insertMany([ { _id: 1, total: 50 }, { _id: 2, total: 150 }, { _id: 3, total: 250 } ]);

Esempio di query

db.orders.aggregate([ { $project: { _id: 1, total: 1, shippingCost: { $switch: { branches: [ { case: { $lte: ["$total", 100] }, then: 5 }, { case: { $lte: ["$total", 200] }, then: 10 }, { case: { $gt: ["$total", 200] }, then: 15 } ], default: 0 } } } } ])

Output

[ { "_id": 1, "total": 50, "shippingCost": 5 }, { "_id": 2, "total": 150, "shippingCost": 10 }, { "_id": 3, "total": 250, "shippingCost": 15 } ]

Esempi di codice

Per visualizzare un esempio di codice per l'utilizzo del $switch comando, scegliete la scheda relativa alla lingua che desiderate utilizzare:

Node.js
const { MongoClient } = require('mongodb'); async function main() { 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('orders'); const result = await collection.aggregate([ { $project: { _id: 1, total: 1, shippingCost: { $switch: { branches: [ { case: { $lte: ['$total', 100] }, then: 5 }, { case: { $lte: ['$total', 200] }, then: 10 }, { case: { $gt: ['$total', 200] }, then: 15 } ], default: 0 } } } } ]).toArray(); console.log(result); await client.close(); } main();
Python
from pymongo import MongoClient def main(): 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.orders result = list(collection.aggregate([ { '$project': { '_id': 1, 'total': 1, 'shippingCost': { '$switch': { 'branches': [ { 'case': { '$lte': ['$total', 100] }, 'then': 5 }, { 'case': { '$lte': ['$total', 200] }, 'then': 10 }, { 'case': { '$gt': ['$total', 200] }, 'then': 15 } ], 'default': 0 } } } } ])) print(result) client.close() if __name__ == '__main__': main()