1. MongoDB 概述
MongoDB 是一款开源的非关系型数据库,是面向文档存储的数据库。它不需要设计固定的数据结构,数据以 BSON(一种类似于 JSON 的二进制形式) 的形式存储。MongoDB 可以应用在大部分的数据存储场景中,尤其适用于大数据存储和高并发读写的场景下。
相比于传统关系型数据库,MongoDB 有很多优势。比如能在分布式系统中存储海量数据,提供更高的可用性和扩展性,增加冗余备份,提供高效索引、查询和排序功能。
2. MongoDB 表的基础知识
2.1 表的创建
在 MongoDB 中,表被称为集合(Collections)。通常情况下,一个集合中存储相似或相关的数据。
创建一个集合需要使用 MongoDB 的 createCollection() 方法。方法需要指定一个集合的名称以及一些可选的参数。
db.createCollection("mycollection", {
capped : true,
autoIndexId : true,
size : 6142800,
max : 10000
})
其中,参数含义如下:
capped: 如果为 True,则创建的集合是一个固定大小的集合,一旦达到最大大小,集合的记录会被自动覆盖。
autoIndexId: 如果为 True,则自动在 _id 字段创建索引。
size: 表示集合的最大大小。单位为字节。
max: 表示集合里最大文档数目。
2.2 数据类型
MongoDB 支持很多类型的数据,主要包括:
String: 存储 UTF-8 数据,最常用的数据类型。
Integer: 存储整数。
Boolean: 存储布尔值。
Double: 存储浮点数。
Timestamp: 存储时间戳。
Date: 存储日期时间,以 Unix 时间格式存储。
ObjectId: 存储文档的 id。
Array: 用于数组或列表。
Binary data: 用于存储二进制数据。
Code: 用于存储 JavaScript 代码。
Object: 用于内嵌式文档。
2.3 索引
MongoDB 支持各种类型的索引,包括单字段和多字段索引,全文索引,地理空间索引等。索引可以极大地提高查询效率。
创建单字段索引需要使用 createIndex() 方法。
db.collection.createIndex( { field: 1 } )
创建多字段索引也是类似的。
db.collection.createIndex( { field1: 1, field2: -1 } )
这里的 1 和 -1 分别表示升序和降序。
2.4 更新表
MongoDB 中更新数据主要有两种方式:update() 和 save()。
update() 方法用于更新指定条件的所有文档。
db.collection.update(
{ query: criteria },
{ update: update },
{
upsert: False,
multi: True
}
)
其中,query 表示更新的条件,update 表示新的数据内容。upsert 和 multi 分别表示在找不到符合条件的文档时是否自动创建,以及是否更新多篇文档。
save() 方法用于更新或新增指定的文档。
db.collection.save({
_id: ObjectId("..."),
"name": "MongoDB",
"type": "database"
})
如果 _id 字段不存在,则为新增操作。如果存在,则为更新操作。
3. 结论
MongoDB 是一个功能强大的数据库系统,特别适合存储海量数据和高并发读写的场景。在正确的使用方式下,MongoDB 可以减少存储和查询数据的复杂性,同时还能提高性能、可扩展性和灵活性。