Docs HomeMongoDB Manual

$toString (aggregation)

On this page本页内容

Definition定义

$toString

Converts a value to a string. 将值转换为字符串。If the value cannot be converted to a string, $toString errors. 如果无法将值转换为字符串,则$toString将出错。If the value is null or missing, $toString returns null.如果该值为null或缺失,$toString将返回null

$toString has the following syntax:具有以下语法:

{
$toString: <expression>
}

The $toString takes any valid expression.$toString接受任何有效的表达式。

The $toString is a shorthand for the following $convert expression:$toString是以下$convert表达式的简写:

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

See also: 另请参阅:

Behavior行为

The following table lists the input types that can be converted to a string:下表列出了可以转换为字符串的输入类型:

Input Type输入类型Behavior行为
BooleanReturns the boolean value as a string.以字符串形式返回布尔值。
DoubleReturns the double value as a string.以字符串形式返回双精度值。
DecimalReturns the decimal value as a string.以字符串形式返回十进制值。
IntegerReturns the integer value as a string.以字符串形式返回整数值。
LongReturns the long value as a string.以字符串形式返回长值。
ObjectIdReturns the ObjectId value as a hexadecimal string.以十六进制字符串形式返回ObjectId值。
StringNo-op. Returns the string value.没有。返回字符串值。
DateReturns the date as a string.以字符串形式返回日期。

The following table lists some conversion to string examples:下表列出了一些转换为字符串的示例:

Example示例Results结果
{$toString: true}"true"
{$toString: false}"false"
{$toString: 2.5}"2.5"
{$toString: NumberInt(2)}"2"
{$toString: NumberLong(1000)}"1000"
{$toString: ObjectId("5ab9c3da31c2ab715d421285")}"5ab9c3da31c2ab715d421285"
{$toString: ISODate("2018-03-27T16:58:51.538Z")}"2018-03-27T16:58:51.538Z"

Example实例

Create a collection orders with the following documents:使用以下文档创建集合orders

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

The following aggregation operation on the orders collection converts the zipcode to string before sorting by the string value:orders集合上的以下聚合操作在按字符串值排序之前将zipcode转换为字符串:

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

The operation returns the following documents:该操作返回以下文档:

{
_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'
}
Note

If the conversion operation encounters an error, the aggregation operation stops and throws an error. To override this behavior, use $convert instead.如果转换操作遇到错误,聚合操作将停止并引发错误。若要覆盖此行为,请改用$convert