Menu Docs
Página inicial do Docs
/
Manual do MongoDB
/ / /

$toBool (agregação)

Nesta página

  • Definição
  • Comportamento
  • Exemplo
$toBool

Converte um valor em booleano.

$toBool tem a seguinte sintaxe:

{
$toBool: <expression>
}

O $toBool usa qualquer expressãoválida.

O $toBool é uma abreviatura para a seguinte expressão $convert:

{ $convert: { input: <expression>, to: "bool" } }

Dica

Veja também:

A tabela a seguir lista os tipos de entrada que podem ser convertidos em booleanos:

Tipo de entrada
Comportamento
Array
Retorna verdadeiro
Dados binários
Retorna verdadeiro
Boolean
Sem operação. Retorna o valor booleano.
Código
Retorna verdadeiro
Data
Retorna verdadeiro
Decimal
Returns true if not zero
Return false if zero
Double
Returns true if not zero
Return false if zero
Inteiro
Returns true if not zero
Return false if zero
JavaScript
Retorna verdadeiro
Long
Returns true if not zero
Return false if zero
Tecla máxima
Retorna verdadeiro
Chave mín.
Retorna verdadeiro
Zero

Retorna nulo

Objeto
Retorna verdadeiro
ObjectId
Retorna verdadeiro
expressão regular
Retorna verdadeiro
String
Retorna verdadeiro
Timestamp
Retorna verdadeiro

Para saber mais sobre os tipos de dados no MongoDB, consulte a página BSON Types.

A tabela a seguir lista alguns exemplos de conversão para booleana:

Exemplo
Resultados
{$toBool: false}
false
{$toBool: 1.99999}
true
{$toBool: NumberDecimal("5")}
true
{$toBool: NumberDecimal("0")}
false
{$toBool: 100}
true
{$toBool: ISODate("2018-03-26T04:38:28.044Z")}
true
{$toBool: "false"}
true
{$toBool: ""}
true
{$toBool: null}
zero

Crie uma collection orders com os seguintes documentos:

db.orders.insertMany( [
{ _id: 1, item: "apple", qty: 5, shipped: true },
{ _id: 2, item: "pie", qty: 10, shipped: 0 },
{ _id: 3, item: "ice cream", shipped: 1 },
{ _id: 4, item: "almonds", qty: 2, shipped: "true" },
{ _id: 5, item: "pecans", shipped: "false" }, // Note: All strings convert to true
{ _id: 6, item: "nougat", shipped: "" } // Note: All strings convert to true
] )

A seguinte operação de agregação na collection orders converte shipped em um valor booleano antes de localizar os pedidos não enviados:

// Define stage to add convertedShippedFlag field with the converted shipped value
// Because all strings convert to true, include specific handling for "false" and ""
shippedConversionStage = {
$addFields: {
convertedShippedFlag: {
$switch: {
branches: [
{ case: { $eq: [ "$shipped", "false" ] }, then: false } ,
{ case: { $eq: [ "$shipped", "" ] }, then: false }
],
default: { $toBool: "$shipped" }
}
}
}
};
// Define stage to filter documents and pass only the unshipped orders
unshippedMatchStage = {
$match: { "convertedShippedFlag": false }
};
db.orders.aggregate( [
shippedConversionStage,
unshippedMatchStage
] )

A operação retorna o seguinte documento:

{ "_id" : 2, "item" : "pie", "qty" : 10, "shipped" : 0, "convertedShippedFlag" : false }
{ "_id" : 5, "item" : "pecans", "shipped" : "false", "convertedShippedFlag" : false }
{ "_id" : 6, "item" : "nougat", "shipped" : "", "convertedShippedFlag" : false }

Observação

Se a operação de conversão encontrar um erro, a operação de aggregation interromperá e exibirá um erro. Para substituir esse comportamento, use $convert em vez disso.

Voltar

$tanh