MongoDB聚合运算符:$toString

MongoDB聚合运算符:$toString

文章目录

  • [MongoDB聚合运算符:toString](#MongoDB聚合运算符:toString)

$toString聚合运算符将指定的值转换为字符串类型。如果指定的值为空或缺失,则返回null;如果值无法被转换为字符串,则报错。

语法

js 复制代码
{
   $toString: <expression>
}

$toString接受任何有效的表达式。

$toString$convert表达式的简写形式:

js 复制代码
{ $convert: { input: <expression>, to: "string" } }

使用

下表列出了可转换为字符串的类型:

输入类型 规则
Boolean 返回布尔值的字符串
Decimal 返回小数值的字符串
Double 返回双精度数的字符串
Integer 返回整数的字符串
Long 返回长整数的字符串
String 直接返回
ObjectId 返回ObjectId值的16进制字符串
Date 返回日期字符串

下表列出了一些转换为字符串的示例:

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

举例

使用下面的脚本创建orders集合:

js 复制代码
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 },
] )

下面的聚合操将zipcode集转换为字符串,然后进行排序:

js 复制代码
// 定义阶段,将zipcode转换为字符串

zipConversionStage = {
   $addFields: {
      convertedZipCode: { $toString: "$zipcode" }
   }
};

// 定义阶段,基于转换后的字段convertedZipCode进行排序

sortStage = {
   $sort: { "convertedZipCode": 1 }
};


db.orders.aggregate( [
  zipConversionStage,
  sortStage
] )

执行的结果为:

js 复制代码
{
  _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'
}

**注意:**如果转换操作遇到错误,聚合操作将停止并抛出错误。

相关推荐
李白客10 分钟前
向量数据库怎么选:RAG 项目最该比较的 8 个维度(深度拆解)
数据库·aigc
cspttty29 分钟前
需求预测校招入门:SQL、Excel、统计模型和业务指标怎么学
大数据·数据库
2501_9336707933 分钟前
面向物流数据分析校招:SQL、Excel、BI、WMS/TMS该怎么准备
数据库
Code_流苏33 分钟前
AI 知识库和数据库有什么区别?从“查订单”到“问规则”讲清楚
数据库·ai·agent·知识库
YangYang9YangYan37 分钟前
财务 BP 校招面试案例整理|业务场景题 + 数据案例,2027 届求职
大数据·数据库
隔窗听雨眠1 小时前
KingbaseES性能优化实战指南:从操作系统调优到SQL等价改写的完整方法论
数据库·kingbasees
NineData2 小时前
NineData 与统信服务器操作系统完成兼容认证
数据库·oracle·操作系统·软件·数据库管理工具·ninedata·统信
十二同学啊11 小时前
向量数据库:从核心原理到 RAG 与 Java 实战
数据库
蓝速科技12 小时前
会议室门牌公告通知发布选型与落地指南丨蓝速科技
大数据·运维·数据库·人工智能·科技
一 乐14 小时前
二手交易平台|基于springboot + vue二手交易平台(源码+数据库+文档)
java·数据库·vue.js·spring boot·小程序