mongodb数据库

目录

一、数据库

二、文档

三、集合

四、元数据

五、MongoDB 数据类型  

1、ObjectId

2、字符串  

3、时间戳

4、日期


一、数据库

一个 mongodb 中可以建立多个数据库。 MongoDB 的默认数据库为"db",该数据库存储在 data 目录中。 MongoDB 的单个实例可以容纳多个独立的数据库,每一个都有自己的集合和权限, 不同的数据库也放置在不同的文件中。 "show dbs" 命令可以显示所有数据的列表。

test> show dbs
admin   40.00 KiB
config  48.00 KiB
local   72.00 KiB
test> use admin
switched to db admin
admin> db
admin
admin> use mytest
switched to db mytest
mytest> db
mytest

数据库也通过名字来标识。数据库名可以是满足以下条件的任意 UTF-8 字符串。

  • 不能是空字符串("")

  • 不得含有' '(空格)、.、$、/、\和\0 (空字符)

  • 应全部小写

  • 最多 64 字节

    有一些数据库名是保留的,可以直接访问这些有特殊作用的数据库。

  • admin: 从权限的角度来看,这是"root"数据库。要是将一个用户添加到这个 数据库,这个用户自动继承所有数据库的权限。一些特定的服务器端命令也只 能从这个数据库运行,比如列出所有的数据库或者关闭服务器

  • local: 这个数据永远不会被复制,可以用来存储限于本地单台服务器的任意集 合

  • config: 当 Mongo 用于分片设置时,config 数据库在内部使用,用于保存分片 的相关信息

二、文档

文档(Document)

文档是一组键值(key-value)对(即 BSON)。MongoDB 的文档不需要设置相同的字段, 并且相同的字段不需要相同的数据类型,这与关系型数据库有很大的区别,也是 MongoDB 非常突出的特点。

一个简单的文档例子如下:

{"site":"www.xianoupeng.com", "name":"xian openlab"}

需要注意的是:

  • 文档中的键/值对是有序的。

  • 文档中的值不仅可以是在双引号里面的字符串,还可以是其他几种数据类型 (甚至可以是整个嵌入的文档)。

  • MongoDB 区分类型和大小写。

  • MongoDB 的文档不能有重复的键。

  • 文档的键是字符串。除了少数例外情况,键可以使用任意 UTF-8 字符。

    文档键命名规范:

  • 键不能含有\0 (空字符)。这个字符用来表示键的结尾。

  • .和$有特别的意义,只有在特定环境下才能使用。

  • 以下划线"_"开头的键是保留的(不是严格要求的)。

三、集合

集合就是 MongoDB 文档组,类似于 RDBMS 中的表格。

集合存在于数据库中,集合没有固定的结构,这意味着你在对集合可以插入不同 格式和类型的数据,但通常情况下我们插入集合的数据都会有一定的关联性。 比如,我们可以将以下不同数据结构的文档插入到集合中:

{"site":"www.baidu.com"} {"site":"www.google.com","name":"Google"} {"site":"www.redhat.com","name":"redhat","num":5}

当第一个文档插入时,集合就会被创建。 合法的集合名

  • 集合名不能是空字符串""。

  • 集合名不能含有\0 字符(空字符),这个字符表示集合名的结尾。

  • 集合名不能以"system."开头,这是为系统集合保留的前缀。

  • 用户创建的集合名字不能含有保留字符。有些驱动程序的确支持在集合名里面 包含,这是因为某些系统生成的集合中包含该字符。除非你要访问这种系统创 建的集合,否则千万不要在名字里出现$。

四、元数据

数据库的信息是存储在集合中。它们使用了系统的命名空间:

dbname.system.*

在 MongoDB 数据库中名字空间 .system.* 是包含多种系统信息的特殊集合 (Collection),如下:

 对于修改系统集合中的对象有如下限制。 在system.indexes插入数据,可以创建索引。但除此之外该表信息是不可变的 (特殊的 drop index 命令将自动更新相关信息)。 system.users是可修改的。 system.profile是可删除的

五、MongoDB 数据类型  

 

1、ObjectId

ObjectId 类似唯一主键,可以很快的去生成和排序,包含 12 bytes,含义是:

  • 前 4 个字节表示创建 unix 时间戳,格林尼治时间 UTC 时间,比北京时间晚了 8 个小时

  • 接下来的 3 个字节是机器标识码

  • 紧接的两个字节由进程 id 组成 PID

  • 最后三个字节是随机数

img

MongoDB 中存储的文档必须有一个 _id 键。这个键的值可以是任何类型的,默认 是个 ObjectId 对象

由于 ObjectId 中保存了创建的时间戳,所以你不需要为你的文档保存时间戳字段, 你可以通过 getTimestamp 函数来获取文档的创建时间:

  > var newObject = ObjectId()  > newObject.getTimestamp()  ISODate("2020-08-22T09:54:50Z")  #ObjectId 转为字符串  > newObject.str  5f40eb6a0babae10a0316183  

2、字符串  

BSON 字符串都是 UTF-8 编码。

3、时间戳

BSON 有一个特殊的时间戳类型用于 MongoDB 内部使用,与普通的 日期 类型不相 关。 时间戳值是一个 64 位的值。其中:

  • 前 32 位是一个 time_t 值(与 Unix 新纪元相差的秒数)

  • 后 32 位是在某秒中操作的一个递增的序数

    在单个 mongod 实例中,时间戳值通常是唯一的。

    在复制集中, oplog 有一个 ts 字段。这个字段中的值使用 BSON 时间戳表示了操 作时间。

    BSON 时间戳类型主要用于 MongoDB 内部使用。在大多数情况下的应用 开发中,你可以使用 BSON 日期类型。

4、日期

表示当前距离 Unix 新纪元(1970 年 1 月 1 日)的毫秒数。日期类型是有符号的, 负数表示 1970 年之前的日期

  > var mydate1 = new Date()  > mydate1  ISODate("2020-08-22T10:02:19.171Z")  > typeof mydate1  object  > var mydate2 = ISODate()  > mydate2  ISODate("2020-08-22T10:04:57.423Z")  > typeof mydate2  object  

  这样创建的时间是日期类型,可以使用  JS 中的 Date 类型的方法。  

  返回一个时间类型的字符串:  

  > var mydate1str =  mydate1.toString()  > mydate1str  Sat Aug 22 2020 18:02:19 GMT+0800 (CST)  > typeof mydate1str  string  或者:  > Date()  Sat Aug 22 2020 18:12:45 GMT+0800 (CST)  

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

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

相关文章

跨境电商平台(例如阿里巴巴、虾皮)的商品数据如何收集?

跨境电商是指通过互联网,以跨越国家或地区边界的方式进行电子商务交易的商业行为。传统的电子商务通常是在同一国家或地区内进行,而跨境电商则侧重于跨国贸易。跨境电商通过在线平台(如阿里巴巴、亚马逊等)或第三方服务商&#xf…

Openlayers 实战 - 地图视野(View)- 图层 -(layer)- 资源(source)显示等级设置

Openlayers 实战 - 地图视野(View)- 图层 -(layer)- 资源(source)显示等级设置 问题原因核心代码完整代码:在线示例 在以往的项目维护中,出现一个问题,使用最新高清底图发…

CSS:filter滤镜 详解(用法 + 代码 + 例子 + 效果)

文章目录 filter 滤镜blur() 模糊度例子 渐变光晕 brightness() 元素亮度contrast() 对比度grayscale() 元素灰度hue-rorate() 色相opacity() 透明度invert() 反转颜色saturate() 饱和度 backdrop-filter 蒙版,滤镜例子 卷轴展开 filter 滤镜 动图为效果添加前后对…

前馈神经网络正则化例子

直接看代码: import torch import numpy as np import random from IPython import display from matplotlib import pyplot as plt import torchvision import torchvision.transforms as transforms mnist_train torchvision.datasets.MNIST(root…

产品经理必知必会0.2

Q1:产品经理需要具备的能力? A:硬实力:产品设计、需求分析、竞品分析、数据分析、撰写文档 软实力:沟通能力、学习能力、用户思维、主动性、好奇心、同理心、责任心、抗压能力、目标导向.... 扩展能力:商业思维、市场敏感度... Q…

hive高频使用的拼接函数及“避坑”

hive高频使用的拼接函数及“避坑” 说到拼接函数应用场景和使用频次还是非常高,比如一个员工在公司充当多个角色,我们在底层存数的时候往往是多行,但是应用的时候我们通常会只需要一行,角色字段进行拼接,这样join其他…

STM32 F103C8T6学习笔记8:0.96寸单色OLED显示屏显示字符

使用STM32F103 C8T6 驱动0.96寸单色OLED显示屏: OLED显示屏的驱动,在设计开发中OLED显示屏十分常见,因此今日学习一下。一篇文章从程序到显示都讲通。 文章提供源码、原理解释、测试工程下载,测试效果图展示。 目录 OLED驱动原理—IIC通信…

通讯录实现【C语言】

目录 前言 一、整体逻辑分析 二、实现步骤 1、创建菜单和多次操作问题 2、创建通讯录 3、初始化通讯录 4、添加联系人 5、显示联系人 6、删除指定联系人 ​7、查找指定联系人 8、修改联系人信息 9、排序联系人信息 三、全部源码 前言 我们上期已经详细的介绍了自定…

mongodb.使用自带命令工具导出导入数据

在一次数据更新中,同事把老数据进行了清空操作,但是新的逻辑数据由于某种原因(好像是她的电脑中病毒了),一直无法正常连接数据库进行数据插入,然后下午2点左右要给甲方演示,所以要紧急恢复本地的…

于vue3+vite+element pro + pnpm开源项目

河码桌面是一个基于vue3viteelement pro pnpm 创建的monorepo项目,项目采用的是类操作系统的web界面,操作起来简单又方便,符合用户习惯,又没有操作系统的复杂! 有两个两个分支,一个是web版本,…

机器学习深度学习——机器翻译(序列生成策略)

👨‍🎓作者简介:一位即将上大四,正专攻机器学习的保研er 🌌上期文章:机器学习&&深度学习——seq2seq实现机器翻译(详细实现与原理推导) 📚订阅专栏:机…

【Freertos基础入门】队列(queue)的使用

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 前言一、队列是什么?二、队列的操作二、示例代码总结 前言 本系列基于stm32系列单片机来使用freerots FreeRTOS是一个广泛使用的开源实时操作系统&…

Linux网络编程:Socket套接字编程

文章目录: 一:定义和流程分析 1.定义 2.流程分析 3.网络字节序 二:相关函数 IP地址转换函数inet_pton inet_ntop(本地字节序 网络字节序) socket函数(创建一个套接字) bind函数(给socket绑定一个服务器地址结…

企业数据库遭到360后缀勒索病毒攻击,360勒索病毒解密

在当今数字化时代,企业的数据安全变得尤为重要。随着数字化办公的推进,企业的生产运行效率得到了很大提升,然而针对网络安全威胁,企业也开始慢慢引起重视。近期,我们收到很多企业的求助,企业的服务器遭到了…

go 协程并发数控制

错误的写法&#xff1a; 这里的<-ch 是为了从channel 中读取 数据&#xff0c;为了不使channel通道被写满&#xff0c;阻塞 go 协程数的创建。但是请注意&#xff0c;go workForDraw(v, &wg) 是不阻塞后续的<-ch 执行的&#xff0c;所以就一直go workForDraw(v, &…

Find My资讯|苹果Vision Pro开发者需将设备配对 AirTag

最近苹果Vision Pro获开发者申请&#xff0c;苹果要求获批的申请者使用 Measure and Fit 应用确认合适的佩戴尺寸&#xff0c;并会根据申请者提交的信息&#xff0c;定制不同的 Vision Pro 开发者套件&#xff0c;以便于契合申请者的面部特征&#xff0c;提供更好的佩戴体验。 …

iPhone 15受益:骁龙8 Gen 3可能缺席部分安卓旗舰机

明年一批领先的安卓手机的性能可能与今年的机型非常相似。硅成本的上涨可能是原因。 你可以想象&#xff0c;2024年许多最好的手机都会在Snapdragon 8 Gen 3上运行&#xff0c;这是高通公司针对移动设备的顶级芯片系统的更新&#xff0c;尚未宣布。然而&#xff0c;来自中国的…

基于libevent的tcp服务器

libevent使用教程_evutil_make_socket_nonblocking_易方达蓝筹的博客-CSDN博客 一、准备 centos7下安装libevent库 yum install libevent yum install -y libevent-devel 二、代码 server.cpp /** You need libevent2 to compile this piece of code Please see: http://li…

多种方法实现 Nginx 隐藏式跳转(隐式URL,即浏览器 URL 跳转后保持不变)

多种方法实现 Nginx 隐藏式跳转(隐式URL,即浏览器 URL 跳转后保持不变)。 一个新项目,后端使用 PHP 实现,前端不做路由,提供一个模板,由后端路由控制。 Route::get(pages/{name}, [\App\Http\Controllers\ResourceController::class, getResourceVersion])

独立站SEO是什么意思?自主网站SEO的含义?

什么是独立站SEO优化&#xff1f;自建站搜索引擎优化是指什么&#xff1f; 独立站SEO&#xff0c;作为网络营销的重要一环&#xff0c;正在逐渐引起人们的关注。在当今数字化时代&#xff0c;独立站已经成为许多企业、个人宣传推广的首选平台之一。那么&#xff0c;究竟什么是…