MongoDB:解读运行机制(mongodb进程)
MongoDB是当下较为流行的NoSQL数据库,它拥有灵活弹性、高可用性、和高效性等优点。要精通MongoDB,就必须要先理解其底层的运行机制。本文将详细介绍MongoDB的运行机制,包括:MongoDB管理的数据结构,和访问的查询路径。
### 一、MongoDB管理的数据结构
MongoDB管理的数据储存在BSON(Binary JSON)格式的文档中,BSON是一种可传输的,面向文档的类型。每一个文档(document)就包含了键值对,可以看成是由字段(field)和值(value)组成的记录(record),字段名就是键,字段值(value)就是值,多个文档形成一组记录,该组记录被称为collection。MongoDB文档中的键和值有一定的结构,也支持复杂的数据类型,比如XML,JSON等格式的文本,非文本形式的数据,以及函数。
### 二、MongoDB访问的查询路径
MongoDB在处理读写数据时,会形成一个查询路径的链。MongoDB的数据连接处理模式如下:首先用户发出查询请求,连接会把命令中的请求信息拆分成一个个细粒度的操作。接着,按照DBCommand会在MongoDB实例中运行,然后就是缓存造就查询操作到连接中。最后查询结果返回到用户处。MongoDB会在查询路径中尽可能的使用缓存去提高查询性能,当有读/写更新时,关联缓存也会及时更新。
### 三、MongoDB支持的操作
MongoDB支持CRUD(增Create,查Retrieve,改Update,删Delete)和特殊操作的功能。CRUD操作是基本的,而特殊操作则是MongoDB的特有操作,例如MapReduce,GridFS,索引等。MongoDB支持的主要操作如下:
**1. insert()**
insert()操作可以将document添加到数据集中,你可以使用insert()操作对单个文档或多个文档添加。
“`js
// 单条数据添加
db.Test.insert(
{
“name” : “John”,
“age” : 25
});
// 批量数据添加
db.Test.insert(
[
{
“name” : “Tina”,
“age” : 21
},
{
“name” : “Joy”,
“age” : 27
}
]);
**2. save()**save()操作可以将文档保存到数据集中,但是当文档有相同的主键值时,save()会覆盖此文档的内容:
```js// 保存数据
db.Test.save({
"name" : "John", "age" : 25
});
**3. find()**
find()操作可以从数据集中构建结果集,它将显示结果集中文档的原始格式:
“`js
// 查询数据
db.Test.find(
{
“name” : “John”
});
**4. update()**
update()操作可用于改变结果集中文档的值:
```js// 更新数据
db.Test.update({
"name" : "John" },
{ $set:
{ "age" : 26
}});
**5. remove()**
remove()操作可以从数据集中删除结果集中文档:
“`js
// 删除数据
db.Test.remove(
{
“name” : “John”
});
MongoDB使用BSON文档来管理数据,从而可以使数据储存更加的灵活、便捷和高效。通过熟悉MongoDB的运行机制,可以更好的操作和使用它。