1、什么是MongoDB
MongoDB是一个基于分布式文件存储的开源数据库系统,支持跨平台和跨语言。MongoDB是文档型数据库,也是NoSQL(not only SQL)的一种,具有高性能、高可用、易扩展等特点。
2、MongoDB的优势
2.1 高灵活性
相对于传统的关系型数据库,MongoDB更加灵活。传统的数据库通常需要先定义数据表结构,然后再根据结构存储数据。但是MongoDB更为灵活,不需要预定义存储的数据结构,可以随时为某个文档添加新的属性和键值对。
2.2 高性能
MongoDB的高性能是由于其采用BSON(Binary JSON)格式储存数据,数据以二进制形式存储,查询时更容易匹配,且数据在磁盘上的物理顺序与其在内存中的逻辑顺序一致。此外,MongoDB的查询语言也很灵活,支持许多查询方式,可快速查询数据。
2.3 高可用性
MongoDB支持数据的复制和分片存储,可以在不同的服务器上部署多个实例,实现高可用性。此外,MongoDB还支持故障自动检测和故障切换,确保数据的可用性。
3、MongoDB的数据存储
3.1 文档
MongoDB的数据以文档的形式存储,一个文档相当于关系型数据库的一条记录,一个集合相当于一个表。文档是MongoDB的一大特色,它以BSON格式存储,可以包括任意数量的键值对,键值对之间用逗号分隔,键和值之间用冒号分隔。
{
"name": "Lucy",
"age": 18,
"gender": "female",
"hobbies": ["reading", "traveling"]
}
上述文档包含了一个人的基本信息,如姓名、年龄、性别和爱好,其中hobbies键是一个数组,包括各种爱好。文档中的键值对可以是任意的数据类型,也可以是嵌套文档或数组。
3.2 集合
集合是MongoDB中的概念,类似于关系型数据库中的表,但是与表不同的是,集合中的每个文档可以有自己的不同的键值对,而数据的结构不需要预定义。
一个MongoDB的文档集合可以类比于一个文件夹,文件夹中包含了许多文档,每个文档可以视为一个文件,而这些文档则是由不同的格式的数据组成的。
3.3 索引
索引是一种数据结构,可以极大地提高数据库的查询效率。MongoDB支持多种类型的索引,包括唯一索引、复合索引、文本索引等。MongoDB默认会为_id键创建一个索引,_id索引是唯一的,不能修改。
4、MongoDB的CURD操作
4.1 CURD简介
CURD是指数据库的增、删、改、查四种基本操作,MongoDB也支持这些操作,操作方式与关系型数据库有些许不同。
4.2 插入文档
MongoDB的插入操作使用insert()方法,可以一次插入一个文档或一个文档数组,如:
db.collection.insertOne({
"name": "Lucy",
"age": 18,
"gender": "female",
"hobbies": ["reading", "traveling"]
})
db.collection.insertMany([
{
"name": "Tom",
"age": 20,
"gender": "male",
"hobbies": ["reading", "running"]
},
{
"name": "Jerry",
"age": 22,
"gender": "male",
"hobbies": ["swimming", "traveling"]
}
])
4.3 查询文档
MongoDB的查询操作使用find()方法,可以使用任意数量的查询条件组合在一起查询,如下例:
db.collection.find({
"age": {"$gt": 18},
"gender": "male"
})
上述代码查找所有年龄大于18岁且性别为男性的文档。
4.4 更新文档
MongoDB的更新操作使用update()方法,可以更新单个或多个文档。更新操作可以使用$set操作符来设置指定键的值,如下例:
db.collection.update(
{"name": "Tom"},
{"$set": {"age": 23}}
)
上述代码将所有名字为"Tom"的文档的年龄更新为23岁。
4.5 删除文档
MongoDB的删除操作使用remove()方法,可以删除指定条件的单个或多个文档,如下例:
db.collection.remove({"name": "Jerry"})
上述代码将所有名字为"Jerry"的文档删除。
5、总结
本文主要介绍了MongoDB的优势、数据存储、CURD操作等内容。由于MongoDB的文档型数据库和其他数据库不同,需要在实际操作中进行实践。众多的代码示例可以实践以更好地掌握MongoDB的使用。