MongoDB聚合运算符:$strLenBytes

MongoDB聚合运算符:$strLenBytes

文章目录

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

$strLenBytes聚合运算符返回指定字符串中 UTF-8 编码的字节数。

语法

{ $strLenBytes: <string expression> }

<expression>为可解析为字符串的表达式,如果解析为null或引用了不存在的字段,返回错误。

使用

$strLenBytes运算符计算字符串中 UTF-8 编码字节的数量,字符可以使用1到4个字节。例如,US-ASCII 字符使用一个字节进行编码;带有变音符号的字符和附加拉丁字母字符(即英语字母表之外的拉丁字符)使用两个字节进行编码;中文、日文和韩文字符通常需要三个字节,而其他 unicode 平面(表情符号、数学符号等)则需要四个字节。

$strLenBytes运算符与$strLenCP运算符不同,后者计算指定字符串中的代码点,而不管每个字符使用多少字节。

返回说明
{ $strLenBytes: "abcde" }5每个字符使用一个字节进行编码
{ $strLenBytes: "Hello World!" }12每个字符使用一个字节进行编码
{ $strLenBytes: "cafeteria" }9每个字符使用一个字节进行编码
{ $strLenBytes: "cafétéria" }11é使用两个字节进行编码
{ $strLenBytes: "" }0空字符串返回0
{ $strLenBytes: "$€λG" }7使用3个字节编码,λ使用2个字节编码
{ $strLenBytes: "寿司" }6每个字符使用3个字符

举例

单字节和多字节字符集

使用下面的脚本创建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" : "寿司" }]
)

下面的聚合使用 $strLenBytes 运算符计算名称值的长度:

db.food.aggregate([{$project: {"name": 1,"length": { $strLenBytes: "$name" }}}]
)

操作返回下面的结果:

{ "_id" : 1, "name" : "apple", "length" : 5 }
{ "_id" : 2, "name" : "banana", "length" : 6 }
{ "_id" : 3, "name" : "éclair", "length" : 7 }
{ "_id" : 4, "name" : "hamburger", "length" : 9 }
{ "_id" : 5, "name" : "jalapeño", "length" : 9 }
{ "_id" : 6, "name" : "pizza", "length" : 5 }
{ "_id" : 7, "name" : "tacos", "length" : 5 }
{ "_id" : 8, "name" : "寿司", "length" : 6 }

_id: 3_id: 5 的文档均包含一个变音符号(分别为 éñ),需要两个字节进行编码。 _id: 8 的文档包含两个日语字符,每个字符使用三个字节进行编码。这使得长度大于 _id: 3_id: 5_id: 8 的文档名称中的字符数。

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

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

相关文章

【51蛋骗鸡595点阵88数码管流水灯综合应用】2021-12-30

缘由51单片机变量进阶与点阵LED-嵌入式-CSDN问答 大佬们 求解单片机点亮点阵程序 被困3天了一直想不明白 - 24小时必答区 #include<reg52.h>//头文件sbit shcpP1^2;//数据输入时钟线 595的11脚 sbit stcpP1^1;//输出存储器锁存时钟线 595的12脚 sbit dsP1^0;//数据线 5…

AI视频教程下载:零代码创建AI智能体、AI Agents和ChatGPT的Gpts

这门课程专注于提示工程的掌握&#xff0c;教你以精确的方式引导GPT&#xff0c;利用它们的生成能力产生卓越的AI驱动结果。一步一步地&#xff0c;你将学会创建多样化的GPT军团——每个都设计来满足特定的专业需求。 从提供个性化职业变更指导的职业教练AI&#xff0c;到以惊…

无人机+飞行汽车:低空经济新引擎,有望爆发式增长

无人机和飞行汽车作为低空经济的新引擎&#xff0c;正在引领一场全新的交通革命。随着技术的不断进步和政策的支持&#xff0c;低空经济有望成为未来经济发展的重要领域&#xff0c;实现爆发式增长。 首先&#xff0c;无人机和飞行汽车具有独特的优势和应用场景。无人机可以在…

Adobe PS 2023、Adobe Photoshop 2023下载教程、安装教程

Adobe Photoshop &#xff08;<-下载连接&#xff09;简介&#xff1a; Adobe Photoshop是一款广泛使用的图像处理软件&#xff0c;由Adobe公司开发。它提供了许多强大的工具和功能&#xff0c;可以用于图像编辑、合成、修饰、设计等各个领域。用户可以使用Photoshop来调整…

Mybatis四种实例化对象方式

代码准备 创建mybatis-config.xml <?xml version"1.0" encoding"UTF-8" ?> <!DOCTYPE configurationPUBLIC "-//mybatis.org//DTD Config 3.0//EN""http://mybatis.org/dtd/mybatis-3-config.dtd"> <configuration…

【HAL库 STM32】输入捕获并实现超声波测距

文章目录 HC-SR04 超声波模块简介HC-SR04 工作原理如何使用HC-SR04模块程序效果 一、工程配置代码如果您发现文章有错误请与我留言&#xff0c;感谢 HC-SR04 超声波模块简介 HC-SR04 工作原理 模块有2个超声波换能器&#xff08;如图所示&#xff09;&#xff0c;一个发出声波…

Web安全测试实战:SQL注入与XSS攻击的检测与防御

摘要&#xff1a; 在网络安全领域&#xff0c;SQL注入和跨站脚本&#xff08;XSS&#xff09;攻击是两大主要威胁&#xff0c;它们可以导致数据泄露、会话劫持甚至整个系统的破坏。本文将通过具体的代码示例、测试步骤和防御策略&#xff0c;展示如何检测和防御这两种攻击&…

三. Django项目之电商购物商城 -- 校验用户名 , 数据入库

Django项目之电商购物商城 – 校验用户名 , 数据入库 需要开发文档和前端资料的可私聊 一. 路由匹配获得用户名 在注册时 , 用户输入用户名 , 通过ajax请求发送到服务器 , 在路由中设置对应url , 响应视图 , 将用户输入的用户名传入视图 , 与数据库进行校验检查用户名是否重…

LeetCode 110.平衡二叉树(Java/C/Python3/Go实现含注释说明,Easy)

标签 树深度优先搜索递归 题目描述 给定一个二叉树&#xff0c;判断它是否是高度平衡的二叉树。 本题中&#xff0c;一棵高度平衡的二叉树定义为&#xff1a; 一个二叉树每个节点的左右两个子树的高度差的绝对值不超过1。 原题&#xff1a;LeetCode 110.平衡二叉树 思路及…

AutoLISP实现图元扩展属性的添加、编辑和删除功能

为了确保AutoLISP代码能够兼容各种CAD软件版本&#xff0c;并实现图元扩展属性的添加、编辑和删除功能&#xff0c;可以采取以下通用方法。这里提供一个示例代码&#xff0c;展示如何实现这些功能&#xff1a; lisp ; 函数&#xff1a;添加、编辑、删除图元扩展属性 (defun CP…

MFC列表控件用ADO添加数据实例

1、本程序基于前期我的博客文章《MFC用ADO连接ACESS数据库实例(免费源码下载)》 程序功能通过编辑框、组合框实时将数据写入ACESS数据库并在列表控件上显示。 2、在主界面资源视图上加上一个按钮控件、两个静态文本、一个编辑框IDC_EDIT1变量名name、一个组合框IDC_COMBO1变量名…

【Java从入门到精通】Java 流(Stream)、文件(File)和IO

Java.io 包几乎包含了所有操作输入、输出需要的类。所有这些流类代表了输入源和输出目标。 Java.io 包中的流支持很多种格式&#xff0c;比如&#xff1a;基本类型、对象、本地化字符集等等。 一个流可以理解为一个数据的序列。输入流表示从一个源读取数据&#xff0c;输出流…

021、Python+fastapi,第一个Python项目走向第21步:ubuntu 24.04 docker 安装mysql8、redis(二)

系列文章目录 pythonvue3fastapiai 学习_浪淘沙jkp的博客-CSDN博客https://blog.csdn.net/jiangkp/category_12623996.html 前言 安装redis 我会以三种方式安装&#xff0c; 第一、直接最简单安装&#xff0c;适用于测试环境玩玩 第二、conf配置安装 第三、集群环境安装 一…

ASP.NET视频点播系统的设计与实现

摘 要 本文阐述了基于WEB的交互式视频点播系统的协议原理、软件结构和设计实现。本视频点播系统根据流媒体传输原理&#xff0c;在校园局域网的基础上模拟基于Web的视频点播系统&#xff0c;实现用户信息管理、视频文件的添加、删除、修改及在线播放和搜索功能。本系统是一个…

python笔记:类方法之 __call__ ,__repr__,__eq__, __gt__

1 __call__ 这个方法允许一个类的实例像一个函数一样被调用例如&#xff0c;如果类 MyClass 定义了 __call__ 方法&#xff0c;那么可以创建一个 MyClass 的实例&#xff0c;并像调用函数一样调用这个实例&#xff1a; class MyClass:def __call__(self, *args, **kwargs):pr…

llama-factory/peft微调千问1.5-7b-chat

目标 使用COIG-CQIA数据集和通用sft数据集对qwen1.5-7b-chat进行sft微调,使用公开dpo数据集进行dpo对齐。学习千问的长度外推方法。 一、训练配置 使用Lora方式, 将lora改为full即可使用全量微调。 具体的参数在 该框架将各个参数、训练配置都封装好了,直接使用脚本,将数…

pip国内源

常见pip镜像源&#xff08;国内源&#xff09; 清华&#xff1a; https://pypi.tuna.tsinghua.edu.cn/simple阿里云&#xff1a; http://mirrors.aliyun.com/pypi/simple/中国科技大学 https://pypi.mirrors.ustc.edu.cn/simple/华中理工大学&#xff1a; http://pypi.hus…

Redis高并发可用-主从复制,集群

Redis高并发可用 1 复制 默认情况下&#xff0c;Redis都是主节点。每个从节点只能有一个主节点&#xff0c;而主节点可以同时具有多个从节点。复制的数据流是单向的&#xff0c;只能由主节点复制到从节点。 1.1 复制的拓扑结构 一主一从&#xff1a; 主一从结构是最简单的…

【leetcode】二分搜索题目总结

704. 二分查找 class Solution { public:int search(vector<int>& nums, int target) {int left 0, right nums.size() - 1;while (left < right) {int mid left (right - left) / 2;if (nums[mid] target) {return mid;} else if (nums[mid] < target) …

GitOps实践之Argo CD凭什么脱颖而出?

文章目录 ArgoCD 的诞生ArgoCD 的特点开发者友好的 DashboardArgoCD支持多租户支持多集群可配置漂移检测支持垃圾回收其他特性ArgoCD 和 FluxCDArgo 生态Argo WorkflowsArgo RolloutsArgo EventArgo AutopilotArgo Image updaterArgo ApplicationSetArgoCD OperatorArgo CD Not…