MongoDB初识

本文对比了MongoDB与关系数据库,介绍MongoDB以BSON文档格式存储,BSON类似JSON但有特殊数据类型,具有轻量、可遍历、高效特点,能描述非/结构化数据。还列举了MongoDB常用数据类型,阐述其优势,如建模直观、结构灵活、开发快速。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

对比关系数据库

 

MongoDB的最小存储单位就是文档(document)独享。文档(doucument)对象对应于关系型数据库的行。数据库在MongoDB中以BSON(Binary-JSON)文档的格式存储在磁盘上。

BSON(Binary Serialized documentFormat)是一种类似json的一种二进制形式的存储格式,简称BinaryJSON。BSON和JSON一样,支持内嵌的文档对象和数组对象,但是BSON有JSON没有的一些数据类型。如Date和BinData类型。

BSON采用了类似于C语言结构体的名称、对表示方法,支持内嵌的文档对象和数组对象,具有轻量性、可遍历性、高效性的三个特点,可以有效描述非结构化数据和结构化数据。这种格式的优点是灵活性高,但是他的缺点是空间利用率不是很理想(但是现在可以忽略了)。

Bson中,除了基础的JSON类型:string,integer,boolean,double,null,array和object,mongo还使用了特殊的数据类型。这些类型包括date,object id,binary data,regula expression和code。每一个驱动都以特定语言的方式实现了这些类型,查看你的驱动文档来获取详细信息。

下表为MongoDB中常用的几种数据类型:

数据类型描述
String字符串。存储数据常用的数据类型。在 MongoDB 中,UTF-8 编码的字符串才是合法的。
Integer整型数值。用于存储数值。根据你所采用的服务器,可分为 32 位或 64 位。
Boolean布尔值。用于存储布尔值(真/假)。
Double双精度浮点值。用于存储浮点值。
Min/Max keys将一个值与 BSON(二进制的 JSON)元素的最低值和最高值相对比。
Array用于将数组或列表或多个值存储为一个键。
Timestamp时间戳。记录文档修改或添加的具体时间。
Object用于内嵌文档。
Null用于创建空值。
Symbol符号。该数据类型基本上等同于字符串类型,但不同的是,它一般用于采用特殊符号类型的语言。
Date日期时间。用 UNIX 时间格式来存储当前日期或时间。你可以指定自己的日期时间:创建 Date 对象,传入年月日信息。
Object ID对象 ID。用于创建文档的 ID。
Binary Data二进制数据。用于存储二进制数据。
Code代码类型。用于在文档中存储 JavaScript 代码。
Regular expression正则表达式类型。用于存储正则表达式。

MongoDB优势:

简单直观:以自然的方式来建模,以直观的方式与数据库交互

结构灵活:弹性模式从容响应需求的频繁变化

快速开发:做更多的事,写更少的代码,Mysql:MongoDB=100:10

 

 

 

 

 

 

 

### MongoDB基础知识 MongoDB 是一种面向文档的 NoSQL 数据库,它采用 BSON(Binary JSON)格式来存储数据。与传统的关系型数据库不同,MongoDB 的基本单位是 **Document** 而不是行,而 Document 存储在一个名为 **Collection** 的容器中[^3]。 #### 数据模型 - **Database**: 类似于关系型数据库中的 Database。 - **Collection**: 类似于表 (Table),它是无模式的,意味着同一个 Collection 中的不同 Document 可以有不同的结构。 - **Document**: 类似于一条记录 (Row),由键值对组成,类似于 JSON 对象。 #### 特殊数据库 MongoDB 提供了一些具有特殊用途的内置数据库: - `admin`: 权限管理的核心数据库,拥有最高权限的操作能力[^4]。 - `local`: 不会被复制到副本集中的数据库,适合存储仅限本地使用的临时数据[^4]。 - `config`: 当启用分片功能时,此数据库用于保存分片元数据信息[^4]。 --- ### 安装与启动 安装完成后,可以通过以下方式启动 MongoDB 服务: ```bash mongod ``` 默认情况下,`mongod` 使用 `/data/db` 文件夹作为数据存储路径。如果需要更改该路径,则需通过 `--dbpath` 参数指定新位置,例如: ```bash mongod --dbpath /custom/path/to/data ``` 以上操作会初始化并运行 MongoDB 实例[^1]。 --- ### 插入数据 向 MongoDB 集合中插入数据非常简单。假设有一个名为 `books` 的集合,可以使用如下命令插入多条记录: ```javascript db.books.insertMany([ { "userName": "Jack", "age": 20 }, { "userName": "Tom" } ]); ``` 需要注意的是,MongoDB 的字段名称和值均区分大小写[^5]。 --- ### 查询数据 查询数据的方式灵活多样。以下是几种常见的查询语法示例: 1. 查找所有文档: ```javascript db.books.find(); ``` 2. 根据条件查找特定文档: ```javascript db.books.find({ "userName": "Jack" }); ``` 3. 返回限定数量的结果: ```javascript db.books.find().limit(5); ``` 4. 投影返回部分字段: ```javascript db.books.find({}, { "userName": 1, "_id": 0 }); ``` 上述语句展示了如何从集合中检索所需的信息[^2]。 --- ### 更新与删除 更新现有文档可通过 `updateOne` 或 `updateMany` 方法实现: ```javascript // 修改第一条匹配项 db.books.updateOne( { "userName": "Jack" }, { $set: { "age": 25 } } ); // 批量修改符合条件的所有项目 db.books.updateMany( {}, { $inc: { "age": 1 } } ); ``` 删除则可调用 `deleteOne` 和 `deleteMany` 函数完成: ```javascript db.books.deleteOne({ "userName": "Tom" }); db.books.deleteMany({}); ``` 这些方法提供了强大的 CRUD 功能支持[^2]。 --- ### 索引机制 为了提高查询效率,MongoDB 支持建立索引来优化性能。创建单一字段索引的例子如下所示: ```javascript db.books.createIndex({ "userName": 1 }); ``` 其中,“1”表示升序排列;如果是降序,则应改为“-1”。此外还可以构建复合索引满足复杂场景需求[^2]。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值