您的位置:

MongoDB基础知识

一、什么是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的使用非常灵活,可以根据实际需要进行不同的配置。我们需要在使用过程中深入学习,在实际应用中进行探索。