Mongodb命名和文档限制

选用mongodb时,需要了解与mongodb数据大小,命名上的限制。针对这些限制,本文针对这些限制进行翻译整理。

BSON文档

mongodb中的数据记录,按照文档的形式保存。文档保存在一种类似于JSON的BSON结构中。Mongodb对BSON做了一些限制。

文档大小

BSON文档大小不能超过16MB

MongoDB通过限制文档大小,保证数据操作和传输的效率。使用MongoDB查询更新数据时, 数据加载到内存当中。当文档记录过大,占用过多的内存空间。导致加载和排序的速度变慢。同时, 文档过大占用更多的网络资源来传输数据。影响文档的查询效率。

文档层次

BSON文档深度不能超过100层

MongoDB支持嵌套字段,即字段值是对象,数组,字符串,时间等数据类型。这样丰富的数据类型,带来了数据保存的灵活性,增加了数据的层次。但读取保存多层次数据时。会为数据库造成大量的负载和开销。mongodb限制了文档的深度为100层。

命名限制

数据库名称限制(database name)

Mongodb数据库名称大小写敏感。即使用大写字母或小写字母区分,可以定义出不同的数据了。如sample_database与Sample_database代表两个不同的数据库。但mongodb的官方文档中,并不支持使用仅带有不同大小写字母的相同字母序列来区分两个数据库。使用上很难区分,容易出错。

  • windows系统下,数据库名称中不能包含/\."$*<>:|?,也不允许包含空字符
  • unix或linux系统中,数据库名称中不能包含/\."$,也不允许包含空字符
  • 数据库名称长度不能超过64个字符

集合名称限制(collection name)

MongoDB 的数据库中包含多个集合,针对集合名称,mongodb有下面的几点限制和建议

  • 使用小写字母或下划线开头
  • 不可以包含$字符,空格字符,空字符
  • 不能以system.开头, system.开头被保留在mongodb系统内部使用
  • 包含下划线或数字开头的集合名称, 可以使用方法db.getCollection()方法获取集合对象
  • 长度限制
    • 4.4版本以后,不分片的集合和视图名称长度,不得超过255bytes, 分片集合和视图,不得超过235bytes。
    • 4.2版本及4.2版本前,不分片的集合和视图名称长度,不得超过120bytes, 分片集合和视图,不得超过100bytes。

字段名称限制(field name)

对于单个字段名称,字段名称不可以包含空支付。但字段名称可以包含点(.)和dollar符号($)

_id字段限制

每一个集合中都必须存在_id字段,用户插入文档时, 可以指定_id字段。当用户没有指定_id字段时,mongodb为插入的文档添加默认的_id字段。对_id字段,mongodb有下面的一些限制。

  • _id字段时Mongodb的保留字段,被用作集合的主键,唯一不可重复,值不可变
  • 构成_id字段内容可以时数组类型外的任何BSON数据类型。如字符,数字,对象,时间等都可以作为_id字段值。
  • 当使用对象定义_id字段时,子字段不可以使用符号$开头

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

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

相关文章

RLlib六:实战用户环境

github源码 自定义用户gymnasium环境使用tune搜索不同的learning rate""" Example of a custom gym environment. Run this example for a demo.This example shows the usage of:- a custom environment- Ray Tune for grid search to try different learni…

el-tree 与table表格联动

html部分 <div class"org-left"><el-input v-model"filterText" placeholder"" size"default" /><el-tree ref"treeRef" class"filter-tree" :data"treeData" :props"defaultProp…

linux gdb调试

安装gdb yum install gdb -y 查看dump文件所在路径&#xff1a; 可通过 cat /proc/sys/kernel/core_pattern命令获取dump目录路径 gdb调试&#xff1a; 可执行文件为 xxx&#xff08;例如&#xff1a;main&#xff09;&#xff0c;结合其运行时产生的dump文件进行调试 命令&a…

彻底删除的文件如何恢复?分享正确方法!

“求救&#xff01;我在清理电脑的过程中&#xff0c;把一些比较久远的文件彻底删除了。但是我突然想起好像有些非常重要的数据也一同被删掉了&#xff0c;这可怎么办&#xff1f;有方法恢复彻底删除的文件么&#xff1f;” 在日常使用电脑的过程中&#xff0c;很多用户或许都会…

机器学习-笔记

绪论 参考期刊 ICCV 偏向视觉CVPR 偏向MLIAAA AI原理ICML 参考链接 CSDN 机器学习知识点全面总结 课堂内容学习-0912-N1 对于特征提取&#xff0c;简而言之就是同类聚得紧&#xff0c;异类分得开&#xff1b;   detection研究的是样本二分类问题&#xff0c;即分为正样本…

【C语言】——三道基础程序练习

&#x1f383;个人专栏&#xff1a; &#x1f42c; 算法设计与分析&#xff1a;算法设计与分析_IT闫的博客-CSDN博客 &#x1f433;Java基础&#xff1a;Java基础_IT闫的博客-CSDN博客 &#x1f40b;c语言&#xff1a;c语言_IT闫的博客-CSDN博客 &#x1f41f;MySQL&#xff1a…

Oracle 数据库中 查询时如何使用日期(时间)作为查询条件

在 Oracle 数据库中&#xff0c;可以使用日期&#xff08;时间&#xff09;作为查询条件来筛选数据。 格式化日期的三种方式 方式一: 关键字 DATE 使用关键字DATE&#xff0c; 仅表示日期类型&#xff0c;并不包含时间信息 方式二&#xff1a;关键字TIMESTAMP 使用关键字TI…

Rockdb简介

背景 最近在使用flink的过程中&#xff0c;由于要存储的状态很大&#xff0c;所以使用到了rockdb作为flink的后端存储&#xff0c;本文就来简单看下rockdb的架构设计 Rockdb设计 Rockdb采用了LSM的结构&#xff0c;它和hbase很像&#xff0c;不过严格的说&#xff0c;基于LS…

设计模式-行为型模式-责任链模式

一、什么是责任链模式 责任链模式是一种设计模式。在责任链模式里&#xff0c;很多对象由每一个对象对其下家的引用而连接起来形成一条链。请求在这个链上传递&#xff0c;直到链上的某一个对象决定处理此请求。发出这个请求的客户端并不知道链上的哪一个对象最终处理这个请求&…

Lavarel定时任务的使用

系统为window 执行命令(执行一次命令只会根据当前时间运行一次定时任务) php artisan schedule:run创建一个任务类(在Jobs文件夹下面) <?phpnamespace App\Jobs;use Illuminate\Bus\Queueable; use Illuminate\Contracts\Queue\ShouldBeUnique; use Illuminate\Contract…

VS2019编译安装GDAL(C++)程序库

一、GDAL简介 GDAL&#xff0c;全称Geospatial Data Abstraction Library&#xff0c;即地理空间数据抽象库&#xff0c;是一个在X/MIT许可协议下读写空间数据的开源库&#xff0c;可以通过命令行工具来进行数据的转换和处理。而在调用中我们常用的OGR&#xff08;OpenGIS Simp…

Talk2BEV: Language-enhanced Bird’s-eye View Maps for Autonomous Driving

论文标题为“Talk2BEV: Language-enhanced Bird’s-eye View Maps for Autonomous Driving”&#xff0c;主要介绍了一种新型的视觉-语言模型&#xff08;LVLM&#xff09;界面&#xff0c;用于自动驾驶情境中的鸟瞰图&#xff08;BEV&#xff09;映射。以下是论文的主要内容概…

MATLAB中std函数用法

目录 语法 说明 示例 矩阵列的标准差 三维数组的标准差 指定标准差权重 矩阵行的标准差 数组页的标准差 排除缺失值的标准差 标准差和均值 标准差 std函数的功能是得到标准差。 语法 S std(A) S std(A,w) S std(A,w,"all") S std(A,w,dim) S std(A…

2311rust,到38版本更新

1.35.0稳定版 此版本亮点是分别为Box<dyn FnOnce>,Box<dyn FnMut>和Box<dyn Fn>实现了FnOnce,FnMut和Fn闭包特征. 此外,现在可按不安全的函数指针转换闭包.现在也可无参调用dbg!. 为Box<dyn Fn*>实现Fn*装饰特征. 以前,如果要调用在盒子闭包中存储的…

nvm切换node后,没有npm

当我们想要在不同的 Node.js 版本之间切换的时候&#xff0c;通常会使用 nvm&#xff08;Node Version Manager&#xff09; 来完成。但是&#xff0c;当我们在使用 nvm 切换 Node.js 版本的时候&#xff0c;可能会遇到没有 npm 的情况。这种情况通常发生在我们在新环境或者重新…

Android---Gradle 构建问题解析

想必做 Android App 开发的对 Gradle 都不太陌生。因为有 Android Studio 的帮助&#xff0c;Android 工程师使用 Gradle 的门槛不算太高&#xff0c;基本的配置都大同小异。只要在 Android Studio 默认生成的 build.gradle 中稍加修改&#xff0c;就都能满足项目要求。但是&am…

『vue-router 要点』

参数或查询的改变并不会触发进入/离开的导航守卫&#xff0c;如何解决&#xff1a; 通过观察 $route 对象来应对这些变化&#xff0c; watch: {$route(to, from) {// 对路由变化作出响应...}}使用 beforeRouteUpdate 的组件内守卫。 beforeRouteUpdate(to, from, next) {// re…

面试题c/c++ --STL 算法与数据结构

1.6 STL 模板 模板底层实现&#xff1a;编译器会对函数模板进行两次编译&#xff0c; 在声明的地方对模板代码本身进行编译&#xff0c; 在调用的地方对参数替换后的代码进行编译。 模板传参分析 模板重载 vector 是动态空间&#xff0c; 随着元素的加入&#xff0c; 它的内…

Apache Airflow (十二) :PythonOperator

&#x1f3e1; 个人主页&#xff1a;IT贫道_大数据OLAP体系技术栈,Apache Doris,Clickhouse 技术-CSDN博客 &#x1f6a9; 私聊博主&#xff1a;加入大数据技术讨论群聊&#xff0c;获取更多大数据资料。 &#x1f514; 博主个人B栈地址&#xff1a;豹哥教你大数据的个人空间-豹…

内网穿透的应用-如何在Docker中部署MinIO服务并结合内网穿透实现公网访问本地管理界面

文章目录 前言1. Docker 部署MinIO2. 本地访问MinIO3. Linux安装Cpolar4. 配置MinIO公网地址5. 远程访问MinIO管理界面6. 固定MinIO公网地址 前言 MinIO是一个开源的对象存储服务器&#xff0c;可以在各种环境中运行&#xff0c;例如本地、Docker容器、Kubernetes集群等。它兼…