MongoDB聚合运算符:$substrCP

MongoDB聚合运算符:$substrCP

文章目录

  • MongoDB聚合运算符:$substrCP
    • 语法
      • 参数字段
    • 使用
    • 举例
      • 单字节字符集
      • 单字节和多字节字符集

$substrCP聚合运算符返回字符串的子串,子串是从指定的UTF-8代码点索引位置开始并包含指定数量的字符,索引是从零开始。

语法

{ $substrCP: [ <string expression>, <code point index>, <code point count> ] }

参数字段

字段类型描述
string expression字符串被取子串的字符串,可以是任何合法的字符串表达式。如果表达式解析为空或引用的字段缺失返回空字符串;如果表达式不能解析为字符串、不为空或字段没有缺失,则返回错误
code point index数值取子串开始的代码点索引位置,必须是非负数的表达式
code point count数值可以是非负整数表达式或可以表示为整数的数字(例如 2.0)
例如结果
{ $substrCP: [ "abcde", 1, 2 ] }"bc"
{ $substrCP: [ "Hello World!", 6, 5 ] }"World"
{ $substrCP: [ "cafétéria", 0, 5 ] }"cafét"
{ $substrCP: [ "cafétéria", 5, 4 ] }"éria"
{ $substrCP: [ "cafétéria", 7, 3 ] }"ia"
{ $substrCP: [ "cafétéria", 3, 1 ] }"é"

使用

$substrCP运算符使用代码点来提取子字符串,这与 $substrBytes 运算符不同,后者按字节数提取子字符串,其中每个字符使用 1 到 4 个字节。

举例

单字节字符集

inventory集合有下列文档:

{ "_id" : 1, "item" : "ABC1", "quarter": "13Q1", "description" : "product 1" }
{ "_id" : 2, "item" : "ABC2", "quarter": "13Q4", "description" : "product 2" }
{ "_id" : 3, "item" : "XYZ1", "quarter": "14Q2", "description" : null }

下面的聚合操作使用 $substrCP 运算符将quarter字段拆分拆分为yearSubstringquarterSubstrin字段。其中quarterSubstring字段表示来自yearSubstring后面的指定字节索引的字符串的其余部分,通过使用$strLenCP从字符串长度中减去字节索引来计算的。:

db.inventory.aggregate([{$project: {item: 1,yearSubstring: { $substrCP: [ "$quarter", 0, 2 ] },quarterSubtring: {$substrCP: ["$quarter", 2, { $subtract: [ { $strLenCP: "$quarter" }, 2 ] }]}}}]
)

操作返回下面的结果:

{ "_id" : 1, "item" : "ABC1", "yearSubstring" : "13", "quarterSubtring" : "Q1" }
{ "_id" : 2, "item" : "ABC2", "yearSubstring" : "13", "quarterSubtring" : "Q4" }
{ "_id" : 3, "item" : "XYZ1", "yearSubstring" : "14", "quarterSubtring" : "Q2" }

单字节和多字节字符集

使用下面的脚本创建food字符集:

db.food.insertMany([{ "_id" : 1, "name" : "apple" },{ "_id" : 2, "name" : "banana" },{ "_id" : 3, "name" : "éclair" },{ "_id" : 4, "name" : "hamburger" },{ "_id" : 5, "name" : "jalapeño" },{ "_id" : 6, "name" : "pizza" },{ "_id" : 7, "name" : "tacos" },{ "_id" : 8, "name" : "寿司sushi" }]
)

下面的例子使用$substrCP运算符从name字段创建一个3个字节的menuCode字段:

db.food.aggregate([{$project: {"name": 1,"menuCode": { $substrCP: [ "$name", 0, 3 ] }}}]
)

操作返回下面的结果:

{ "_id" : 1, "name" : "apple", "menuCode" : "app" }
{ "_id" : 2, "name" : "banana", "menuCode" : "ban" }
{ "_id" : 3, "name" : "éclair", "menuCode" : "écl" }
{ "_id" : 4, "name" : "hamburger", "menuCode" : "ham" }
{ "_id" : 5, "name" : "jalapeño", "menuCode" : "jal" }
{ "_id" : 6, "name" : "pizza", "menuCode" : "piz" }
{ "_id" : 7, "name" : "tacos", "menuCode" : "tac" }
{ "_id" : 8, "name" : "寿司sushi", "menuCode" : "寿司s" }

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/830811.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

『FPGA通信接口』DDR(3)DDR3颗粒读写测试

文章目录 前言1.配套工程简介2.测试内容与策略3. 测试程序分析4.程序结果分析5.一个IP控制两颗DDR36.传送门 前言 以四颗MT41K512M16HA-125AIT颗粒为例&#xff0c;介绍如何在一块新制板卡上做关于DDR3的器件测试。前面两篇介绍了什么是DDR&#xff0c;并介绍了xilinx给出的FPG…

神经网络反向传播算法

今天我们来看一下神经网络中的反向传播算法&#xff0c;之前介绍了梯度下降与正向传播~ 神经网络的反向传播 专栏&#xff1a;&#x1f48e;实战PyTorch&#x1f48e; 反向传播算法&#xff08;Back Propagation&#xff0c;简称BP&#xff09;是一种用于训练神经网络的算…

【限流】基于springboot(拦截器) + redis(执行lua脚本)实现注解限流

实现了滑动窗口&#xff0c;固定窗口&#xff0c;令牌桶&#xff0c;漏桶四种限流算法&#xff0c;并且支持各种扩展和修改&#xff0c;源码简单易上手。 Gitee&#xff1a;https://gitee.com/sir-tree/rate-limiter-spring-boot-starter 一、令牌桶算法—入桶量限制 在客户端…

品牌百度百科词条需要什么资料?

品牌百度百科词条是一个品牌的数字化名片&#xff0c;更是品牌历史、文化、实力的全面展现。 作为一个相当拿得出手的镀金名片&#xff0c;品牌百度百科词条创建需要什么资料&#xff0c;今天伯乐网络传媒就来给大家讲解一下。 一、品牌基本信息&#xff1a;品牌身份的明确 品…

【漏洞复现】科达 MTS转码服务器 任意文件读取漏洞

0x01 产品简介 科达 MTS转码服务器是一款专业的视频转码设备&#xff0c;采用了高性能的硬件配置和先进的转码技术&#xff0c;能够实现高效、高质量的视频转码。 0x02 漏洞概述 科达 MTS转码服务器存在任意文件读取漏洞&#xff0c;攻击可以通过该漏洞读取服务器任意敏感信…

FSD自动驾驶泛谈

特斯拉的FSD&#xff08;Full-Self Driving&#xff0c;全自动驾驶&#xff09;系统是特斯拉公司研发的一套完全自动驾驶系统。旨在最终实现车辆在多种驾驶环境下无需人类干预的自动驾驶能力。以下是对FSD系统的详细探讨&#xff1a; 系统概述 FSD是特斯拉的自动驾驶技术&…

宠物领养|基于SprinBoot+vue的宠物领养管理系统(源码+数据库+文档)

宠物领养目录 基于Spring Boot的宠物领养系统的设计与实现 一、前言 二、系统设计 三、系统功能设计 1前台 1.1 宠物领养 1.2 宠物认领 1.3 教学视频 2后台 2.1宠物领养管理 2.2 宠物领养审核管理 2.3 宠物认领管理 2.4 宠物认领审核管理 2.5 教学视频管理 四、…

英语学习笔记--发音-元音和辅音

以下所有内容来自“AI豆包”。 需要注意的是&#xff0c;以下发音类似仅为帮助你理解的中文发音示例&#xff0c;与英语元音的实际发音可能存在一定差异。如果你想更准确地学习英语元音的发音&#xff0c;建议你多听、多读、多模仿英语原声材料&#xff0c;并寻求专业英语教师…

零基础自学前端到达到什么水平才能找工作?

零基础自学前端到达到什么水平才能找工作&#xff1f; 零基础自学前端到达到什么水平才能找工作&#xff1f;从这个字眼的表面上来回答这个问题&#xff0c;但是是前端水平越高越好咯。前端技术人才只有不断通过学习、项目的事件来不断充实提高自己的技术&#xff0c;随之而来&…

【Jenkins】持续集成与交付 (四):修改Jenkins插件下载地址、汉化

🟣【Jenkins】持续集成与交付 (四):修改Jenkins插件下载地址、汉化 一、修改Jenkins插件下载地址二、汉化Jenkins三、关于Jenkins💖The Begin💖点点关注,收藏不迷路💖 一、修改Jenkins插件下载地址 由于Jenkins官方插件地址下载速度较慢,我们可以通过修改下载地址…

Jupyter 容器环境: Debian 11离线部署SSH Server总结

在基于continuumio/anaconda3镜像搭建的jupyter环境中,想在pycharm中进行远程debug代码,但容器中没有部署ssh server导致无法进行。 本文讲述如何在anaconda3容器中安装ssh server 安装步骤 修改云源 echo "deb https://mirrors.tuna.tsinghua.edu.cn/debian/ bulls…

Unity中WWWForm与 JsonUtility.ToJson区别

在Unity中&#xff0c;WWWForm 和 JsonUtility.ToJson 是两个用于处理网络请求中数据的工具&#xff0c;但它们的功能和用途有着显著的区别。 WWWForm WWWForm 是Unity早期版本中用于构建HTTP表单数据的类。它主要用于WWW类的POST请求&#xff0c;允许你添加表单字段&#xf…

6、FreeCAD的设计

一、FreeCAD的模块化设计&#xff08;插件系统&#xff09; 模块化设计是成功的软件架构的关键设计原则。FreeCAD采用了与Salome平台相似的模块化结构&#xff0c;后者是一个开源的CAE平台&#xff0c;包含几何建模、网格划分、FEM和CFD求解器模块。FreeCAD拥有生成新模块的基…

vue2迁移到vue3,v-model的调整

项目从vue2迁移到vue3&#xff0c;v-model不能再使用了&#xff0c;需要如何调整&#xff1f; 下面只提示变化最小的迁移&#xff0c;不赘述vue2和vue3中的常规写法。 vue2迁移到vue3&#xff0c;往往不想去调整之前的代码&#xff0c;以下就使用改动较小的方案进行调整。 I…

Vue3 中setup模式下component标签 is属性动态绑定组件空白显示问题

先看官网说明&#xff1a; <!-- 组件会在 currentTabComponent 改变时改变 --> <component v-bind:is"currentTabComponent"></component>在上述示例中&#xff0c;currentTabComponent 可以包括 已注册组件的名字&#xff0c;或 一个组件的选项…

美国洛杉矶服务器托管需要了解什么?

美国洛杉矶拥有多个数据中心提供服务器托管服务&#xff0c;这些服务通常包括弹性云服务器、裸金属服务器等。以下是一些关于美国洛杉矶服务器托管的详细信息&#xff0c;rak部落小编为您整理发布。 1. **数据中心分布**&#xff1a;在洛杉矶有多处数据中心&#xff0c;它们提供…

CVPR 小样本土地覆盖制图 张洪艳教授团队获挑战赛冠军

提出了一个广义的基于少镜头分割的框架&#xff0c;以更新高分辨率土地覆盖制图中的新类&#xff0c;分为三个部分:(a)数据预处理:对基础训练集和新类的少镜头支持集进行分析和扩充;(b)混合分割结构:将多基学习器和改进的投影到正交原型(POP)网络相结合&#xff0c;增强基类识别…

CSS中文本样式(详解网页文本样式)

目录 一、Text介绍 1.概念 2.特点 3.用法 4.应用 二、Text语法 1.文本格式 2.文本颜色 3.文本的对齐方式 4.文本修饰 5.文本转换 6.文本缩进 7.color&#xff1a;设置文本颜色。 8.font-family&#xff1a;设置字体系列。 9.font-size&#xff1a;设置字体大小。…

Laravel5.4 反序列化

文章目录 0x01 环境搭建0x02 POP 链0x03 exp0x04 总结 前言&#xff1a;CC 链复现的头晕&#xff0c;还是从简单的 Laravel 开始吧。 laravel 版本&#xff1a;5.4 0x01 环境搭建 laravel安装包下载地址 安装后配置验证页面。在 /routes/web.php 文件中添加一条路由&#xf…

数据库基础--MySQL简介以及基础MySQL操作

数据库概述 数据库&#xff08;DATABASE&#xff0c;简称DB&#xff09; 定义:是按照数据结构来组织、存储和管理数据的仓库.保存有组织的数据的容器(通常是一个文件或一组文件) 数据库管理系统(Database Management System,简称DBMS) 专门用于管理数据库的计算机系统软件;…