$toString (agregação)
Nesta página
Definição
$toString
Converte um valor em uma string. Se o valor não puder ser convertido em uma string,
$toString
apresentará erro. Se o valor for nulo ou estiver ausente,$toString
retornará nulo.$toString
tem a seguinte sintaxe:{ $toString: <expression> } O
$toString
usa qualquer expressãoválida.O
$toString
é uma abreviatura para a seguinte expressão$convert
:{ $convert: { input: <expression>, to: "string" } }
Comportamento
A tabela a seguir lista os tipos de entrada que podem ser convertidos em uma string:
Tipo de entrada | Comportamento |
---|---|
Boolean | Retorna o valor booleano como uma string. |
Double | Retorna o valor double como string. |
Decimal | Retorna o valor decimal como uma string. |
Inteiro | Retorna o valor inteiro como uma string. |
Long | Retorna o valor longo como uma string. |
ObjectId | Retorna o valor ObjectId como uma string hexadecimal. |
String | Nenhum oplog. Retorna o valor da string. |
Data | Retorna a data como uma string. |
A tabela a seguir lista alguns exemplos de conversão para string:
Exemplo | Resultados |
---|---|
{$toString: true} | "verdadeiro" |
{$toString: false} | "falso" |
{$toString: 2.5} | "2,5" |
{$toString: NumberInt(2)} | "2" |
{$toString: NumberLong(1000)} | "1.000" |
{$toString: ObjectId("5ab9c3da31c2ab715d421285")} | "5ab9c3da31c2ab715d421285" |
{$toString: ISODate("2018-03-27T16:58:51.538Z")} | "2018-03-27T16:58:51.538Z" |
Exemplo
Crie uma collection orders
com os seguintes documentos:
db.orders.insertMany( [ { _id: 1, item: "apple", qty: 5, zipcode: 93445 }, { _id: 2, item: "almonds", qty: 2, zipcode: "12345-0030" }, { _id: 3, item: "peaches", qty: 5, zipcode: 12345 }, ] )
A seguinte operação de aggregation na collection orders
converte zipcode
para string antes de classificar pelo valor da string:
// Define stage to add convertedZipCode field with the converted zipcode value zipConversionStage = { $addFields: { convertedZipCode: { $toString: "$zipcode" } } }; // Define stage to sort documents by the converted zipcode sortStage = { $sort: { "convertedZipCode": 1 } }; db.orders.aggregate( [ zipConversionStage, sortStage ] )
A operação retorna os seguintes documentos:
{ _id: 3, item: 'peaches', qty: 5, zipcode: 12345, convertedZipCode: '12345' }, { _id: 2, item: 'almonds', qty: 2, zipcode: '12345-0030', convertedZipCode: '12345-0030' }, { _id: 1, item: 'apple', qty: 5, zipcode: 93445, convertedZipCode: '93445' }
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.