news 2026/4/20 17:23:20

MongoDB数据库的了解使用

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
MongoDB数据库的了解使用

文章目录

  • 1. MongoDB的概述
  • 2. bson
  • 3. MongoDB数据库特点
  • 4. MongoDB存储的数据类型
  • 5. Docker下使用MongoDB

1. MongoDB的概述

MongoDB数据库是一个跨平台,面向文档的数据库。 支持的结构非常松散,是类似于json的bson数据,可以存储比较复杂的数据类型。 适合使用MongoDB的情况:数据量大,写入频繁,数据的价值相对较低。

2. bson

bson全称binary json,是一种类json的二进制格式,可以把它理解为JSON的“机器语言版”。 bson的特点: 1)快 (遍历速度极快):BSON在每条记录前都存储了总长度,解析器可以跳过不需要的字段直接定位到目标数据,而JSON必须从头到尾扫描文本。 2)轻 (空间利用率高):虽然BSON会额外存储一些元数据(如长度、类型),但它使用紧凑的二进制编码,且支持整数、日期、原生浮点数等JSON不支持的类型,避免了JSON中数字转字符串带来的空间浪费。 3)强 (数据类型更丰富):JSON只支持字符串、数字、布尔、数组、对象、null这6种基础类型。BSON在此基础上增加了:日期类型 (Date)、整数类型 (Int32, Int64)、字节数组 (BinData) - 用于存储图片、文件等二进制数据、正则表达式、时间戳、JavaScript代码 等。

3. MongoDB数据库特点

1)面向文档的 NoSQL 数据库,数据存储是bson,而不是表格,每个文档是一个完整的对象。 2)灵活模式:同一个集合(Collection)中的文档可以有不同的字段结构,不需要预先定义表结构。 3)高可扩展性:原生支持水平扩展(分片),可以轻松将数据分布到成百上千台服务器上。 4)高性能:适合高并发读写,尤其是写操作(通过索引、内存映射等机制优化)。 5)丰富的查询语言:支持等值查询、范围查询、聚合管道、文本搜索、地理位置查询等。 6)索引支持:支持单字段、复合、多键(数组)、文本、地理空间等多种索引。 7)高可用性:通过副本集(Replica Set)自动故障转移,保证数据不丢失。

4. MongoDB存储的数据类型

1)null 2)布尔 3)数值:默认是64位的浮点(Double),如果想存整数,可以使用NumberInt(4字节),NumberLong(16字节)。 4)字符串 5)日期 6)正则表达式 7)数组 8)内嵌文档 9)对象ID 10)二进制数据 11)代码片段

5. Docker下使用MongoDB

1) 默认端口:27017 2)登录:mogo 192.182.2.144 ,进去以后是test数据库 3)退出:exit 4)启动: docker run -di --name=mymongodb -p 27017:27017 mongo11 【mongo11是image的id,根据实际情况修改】 5)创建并使用数据库: use mongo1 【如果有,直接使用,如果没有,先创建再用】 6)插入一条数据: db.article.insert({"_id":"111","name":"张三","count":NumberLong(222)}) ; 注:_id 是默认id,如果没有赋值,默认是一个24位的随机数,如果手动赋值了,就是我们手动赋的值。 7)查询所有:db.article.find(); 8)修改/更新:db.article.update({"_id":"111"},{$set:{"name":"更新后的名称","count":NumberInt(20)}}); 9) 查询总记录数:db.article.count(); 10) 条件查询:db.article.find({"id":"111"}); 11) 模糊查询: 1. 查询包含李的:db.article.find({"name":/李/}) ; 2. 查询李开头的:db.article.find({"name"=/^李/}); 12)条件查询 大于:$gt 小于:$lt 大于等于:$gte 小于等于: $lte 不等于:$ne 包含:$in 不包含:$nin 并且:$and 或者:$or 查询访问量大于3000的:db.article.find({"count":{$gt:NumberLong(3000)}}); 查询type类型等于1,并且name包含李的:db.article.find({$and:[{"type":"1"},{"name":/李/}]}); 查询访问量大于1000或者type类型是1,同时name包含李的:db.article.find({$and:[{$or:[{"tyoe":"1"},{"count":{$gt:NumberLong(1000)}}]},{"name":/李/}]}); 13)列值自动增长:$inc 让id是111的count每次自增100:db.article.update:({"id":"111"},{$inc:{"count":NumberInt(100)}});
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/4/20 17:23:03

AvalancheGo API使用指南:完整接口文档和示例

AvalancheGo API使用指南:完整接口文档和示例 【免费下载链接】avalanchego Go implementation of an Avalanche node. 项目地址: https://gitcode.com/gh_mirrors/ava/avalanchego AvalancheGo是Avalanche节点的Go语言实现,提供了丰富的API接口用…

作者头像 李华
网站建设 2026/4/20 17:22:11

深度解析:MedSAM医疗影像分割模型的技术架构与优化实践

深度解析:MedSAM医疗影像分割模型的技术架构与优化实践 【免费下载链接】MedSAM Segment Anything in Medical Images 项目地址: https://gitcode.com/gh_mirrors/me/MedSAM MedSAM(Segment Anything in Medical Images)是一款专为医疗…

作者头像 李华
网站建设 2026/4/20 17:22:07

KART-RERANK企业内网部署方案:保障数据安全的一键镜像落地

KART-RERANK企业内网部署方案:保障数据安全的一键镜像落地 最近和几个在金融和政务行业做技术的朋友聊天,大家聊得最多的不是模型效果有多好,而是数据怎么才能不出门。一个朋友说,他们单位想用AI优化内部文档的检索排序&#xff…

作者头像 李华
网站建设 2026/4/20 17:20:58

从KITTI到EVO:手把手完成LIO-SAM的部署、适配与精度评估

1. KITTI数据集准备与格式转换 第一次接触KITTI数据集时,我被它庞大的数据量和复杂的目录结构搞得晕头转向。经过多次实践,我总结出一套最高效的数据处理方法。KITTI数据集分为raw data和odometry两个主要部分,对于LIO-SAM这类激光惯性里程计…

作者头像 李华
网站建设 2026/4/20 17:19:50

程序猿成长计划:Redis缓存技术深度解析

程序猿成长计划:Redis缓存技术深度解析 【免费下载链接】growing-up 程序猿成长计划 项目地址: https://gitcode.com/gh_mirrors/gr/growing-up Redis作为高性能的内存数据库,是程序猿成长道路上必须掌握的缓存技术。本指南将从基础安装到主从配置…

作者头像 李华