一、什么是MongoDB
MongoDB是一个开源的文档数据库,它采用了类似于JSON的BSON数据格式,可以支持复杂数据结构和动态查询。MongoDB可以减少不必要的关系型数据设计的复杂度,以及自身带有的分布式特性可以方便本身的扩展。
MongoDB的安装可以通过官方提供的rpm安装包,也可以通过源码编译进行安装。
安装完成后,我们需要开启mongodb的服务:
sudo service mongod start
二、基本概念
1.数据库
在MongoDB中,数据库可以看作是一组集合(Collection)的集合。每个数据库都有它自己的独立的权限和配置。MongoDB支持多数据库的操作,可以进行不同数据库之间的跨数据库操作。
// 使用use命令切换到一个新的数据库
use test_db
// 查看当前所有的数据库
show dbs
// 删除一个数据库
db.dropDatabase()
2.集合
集合就是多个文档的集合,可以看作是关系型数据库中的表。集合中的每个文档都是JSON格式的文档。
// 创建一个集合
db.createCollection('test_collection')
// 查看一个数据库中所有的集合
show collections
// 删除一个集合
db.test_collection.drop()
3.文档
在MongoDB中,文档是以BSON格式进行存储的最小数据单位,类似于RDBMS中的行。文档可以随意修改、增加和删除,非常灵活。
db.test_collection.insert({
"title": "MongoDB实战",
"author": "coder",
"content": "这是一本关于MongoDB实战的书籍"
})
4.字段
每个文档都可以包含零个或更多个字段,是访问文档中单个元素的路径。字段可以是字面量、数组、文档,在一个文档中,不同的字段的数据类型可以不同。
db.test_collection.insert({
"title": "MongoDB实战",
"author": "coder",
"content": "这是一本关于MongoDB实战的书籍",
"tags": ["数据库", "NoSQL"],
"publishDate": new Date(),
})
三、查询语句
1.查询所有记录
使用find()方法查询所有记录。
//查询所有记录
db.test_collection.find()
2.条件查询
使用find()方法和查询条件进行特定条件的查询。
// 查找某个author的所有记录
db.test_collection.find({"author": "coder"})
// 查找三个月内的所有记录
db.test_collection.find({"publishDate": {"$gte": new Date(new Date().setMonth(new Date().getMonth() - 3))}})
3.限制查询记录
使用limit()方法限制查询返回的记录条数。
//查询前5条记录
db.test_collection.find().limit(5)
4.跳过查询记录
使用skip()方法跳过查询记录中的前n条记录。
//查询第5-10条记录
db.test_collection.find().skip(4).limit(6)
四、更新操作
1.修改一条记录
使用update()方法修改一条记录。如果不存在,则新建一条。
// 修改第一条记录的title为‘MongoDB从入门到放弃’
db.test_collection.update({"author": "coder"}, {"$set": {"title": "MongoDB从入门到放弃"}}, {"multi": false, "upsert": false})
2.修改多条记录
如果需要修改多条记录,则需要设置multi为true。
// 修改所有记录的title为‘MongoDB从入门到出家’
db.test_collection.update({"author": "coder"}, {"$set": {"title": "MongoDB从入门到出家"}}, {"multi": true, "upsert": false})
五、删除操作
1.删除一条记录
使用remove()方法删除一条记录。
// 删除title为‘MongoDB从入门到出家’的记录
db.test_collection.remove({"title": "MongoDB从入门到出家"})
2.删除多条记录
如果需要删除多条记录,则需要给remove()方法添加multi参数。
// 删除所有author为‘coder’的记录
db.test_collection.remove({"author": "coder"}, {"multi": true})
六、索引
在MongoDB中,索引和关系型数据库中的索引类似,可以提高查询效率。MongoDB中默认会为_id字段自动创建索引。
1.创建索引
可以使用ensureIndex()方法来为一个字段创建索引。
// 为title字段创建索引
db.test_collection.ensureIndex({"title": 1})
2.查看索引
使用getIndexes()方法查看一个集合中所有的索引。
// 查看一个集合中所有的索引
db.test_collection.getIndexes()
3.删除索引
通过dropIndexes()可以删除一个已经创建的索引。
// 删除title字段的索引
db.test_collection.dropIndex({"title": 1})
七、备份与恢复
1.备份数据
使用mongodump命令可以备份一个mongodb数据库。
// 备份数据库
mongodump --host 127.0.0.1 --port 27017 --out /data/backups/my_test_db/
2.恢复数据
使用mongorestore命令可以恢复一个mongodb数据库。
// 恢复数据库
mongorestore --host 127.0.0.1 --port 27017 /data/backups/my_test_db/
八、总结
以上是MongoDB的一些基础知识,包括数据库、集合、文档、字段、查询语句、更新操作、删除操作、索引、备份与恢复等。MongoDB的使用非常灵活,可以根据实际需要进行不同的配置。我们需要在使用过程中深入学习,在实际应用中进行探索。