$switch - Amazon DocumentDB

As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.

$switch

Novo a partir da versão 4.0.

Não é compatível com o cluster elástico.

O $switch operador é um operador de expressão condicional no Amazon DocumentDB que permite avaliar uma lista de expressões de caso e retornar o valor do primeiro caso avaliado como verdadeiro ou um valor padrão se nenhuma expressão de caso for verdadeira.

Parâmetros

  • branches: uma matriz de documentos, cada um com um campo de caso que contém a expressão booleana a ser avaliada e um campo then que contém o valor a ser retornado se a expressão de maiúsculas e minúsculas for verdadeira.

  • default: (opcional) O valor a ser retornado se nenhuma das expressões de maiúsculas e minúsculas for verdadeira.

Exemplo (MongoDB Shell)

O exemplo a seguir demonstra o uso do $switch operador para determinar o custo de envio de um pedido com base no total do pedido.

Crie documentos de amostra

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

Exemplo de consulta

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 } } } } ])

Saída

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

Exemplos de código

Para ver um exemplo de código para usar o $switch comando, escolha a guia do idioma que você deseja usar:

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