Menu Docs

Página inicial do DocsDesenvolver aplicaçõesManual do MongoDB

$toLong (agregação)

Nesta página

  • Definição
  • Comportamento
  • Exemplo
$toLong

Converte um valor em um longo. Se o valor não puder ser convertido em longo, $toLong apresentará erro. Se o valor for nulo ou estiver ausente, $toLong retornará nulo.

$toLong tem a seguinte sintaxe:

{
$toLong: <expression>
}

$toLong usa qualquer expressão válida.

O $toLong é uma abreviação para a seguinte expressão $convert :

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

Dica

Veja também:

A tabela a seguir lista os tipos de entrada que podem ser convertidos em um número decimal:

A tabela a seguir lista os tipos de entrada que podem ser convertidos para um longo:

Tipo de entrada
Comportamento
Boolean
Retorna Long(0) para false.
Retorna Long(1) para true.
Duplo

Retorna valor truncado.

O valor duplo truncado deve cair dentro do valor mínimo e máximo por um longo período.

Você não pode converter um valor duplo cujo valor truncado é menor que o valor mínimo longo ou é maior que o valor máximo longo.

Decimal

Retorna valor truncado.

O valor decimal truncado deve cair dentro do valor mínimo e máximo por um longo período.

Não é possível converter um valor decimal cujo valor truncado seja menor que o valor longo mínimo ou maior que o valor longo máximo.

Inteiro
Retorna o valor int como um longo.
Longo
Sem operação. Retorna o valor longo.
String

Retorna o valor numérico da string.

O valor da string deve ser longo de base 10 (por exemplo, "-5", "123456").

Você não pode converter um valor de string de um número flutuante, decimal ou 10 que não seja de base (por exemplo, "-5.0", "0x6400")

Data
Converte a data para o número de milissegundos desde a época.

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

Exemplo
Resultados
{ $toLong: true }
Long("1")
{ $toLong: false }
Long("0")
{ $toLong: 1.99999 }
Long("1")
{ $toLong: NumberDecimal("5.5000") }
Long("5")
{ $toLong: NumberDecimal("9223372036854775808.0") }
Erro
{ $toLong: NumberInt(8) }
Long(8)
{ $toLong: ISODate("2018-03-26T04:38:28.044Z") }
Long("1522039108044")
{ $toLong: "-2" }
Long("-2")
{ $toLong: "2.5" }
Erro
{ $toLong: null }
zero

Crie uma collection orders com os seguintes documentos:

db.orders.insertMany( [
{ _id: 1, item: "apple", qty: NumberInt(5) },
{ _id: 2, item: "pie", qty: "100" },
{ _id: 3, item: "ice cream", qty: NumberLong("500") },
{ _id: 4, item: "almonds", qty: "50" },
] )

A seguinte operação de aggregation na collection orders converte qty em longo antes de classificar pelo valor:

// Define stage to add convertedQty field with converted qty value
qtyConversionStage = {
$addFields: {
convertedQty: { $toLong: "$qty" }
}
};
// Define stage to sort documents by the converted qty values
sortStage = {
$sort: { "convertedQty": -1 }
};
db.orders.aggregate( [
qtyConversionStage,
sortStage
])

A operação retorna os seguintes documentos:

{ _id: 3, item: 'ice cream', qty: Long("500"), convertedQty: Long("500") },
{ _id: 2, item: 'pie', qty: '100', convertedQty: Long("100") },
{ _id: 4, item: 'almonds', qty: '50', convertedQty: Long("50") },
{ _id: 1, item: 'apple', qty: 5, convertedQty: Long("5") }

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.

← $toInt (agregação)