1. 什么是MongoDB
MongoDB是一个基于分布式文件存储的数据库系统,由C++语言编写。它旨在为WEB应用提供可扩展的高性能数据存储解决方案。
MongoDB理念:为开发者提供一种更加灵活、更加快速的数据库解决方案。
MongoDB使用了一个称为 BSON(Binary Serialized Document)的类JSON文档格式存储数据。BSON和JSON有类似的数据结构,但是BSON有一些扩展,如支持日期类型和二进制数据类型。
2. MongoDB的优点
2.1 高性能
MongoDB的性能非常高,它支持对数据建立索引。这意味着MongoDB能够非常快速地查询数据。
索引是MongoDB的一个核心功能。索引类似于书的目录,它们让MongoDB快速找到要查询的数据。
db.collection.ensureIndex( { "name": 1 } )
上面的语句建立了对名字字段的索引。在查询名字时,MongoDB会自动使用索引进行优化,使查询速度更快。
2.2 数据持久化
MongoDB将数据存储在硬盘上,而不是内存中。这意味着即使服务器崩溃或发生故障,您的数据也不会丢失。
数据持久化是指数据被写入物理介质(如硬盘)并在服务器重启后仍然存在。
3. 如何安装MongoDB
在 Ubuntu 中通过命令行安装 MongoDB:
sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv EA312927
echo "deb http://repo.mongodb.org/apt/ubuntu "$(lsb_release -sc)"/mongodb-org/3.2 multiverse" | sudo tee /etc/apt/sources.list.d/mongodb-org-3.2.list
sudo apt-get update
sudo apt-get install -y mongodb-org
安装成功后可以运行以下命令来启动 MongoDB:
sudo service mongod start
使用如下命令来检查 MongoDB 是否正常工作:
sudo systemctl status mongod
4. 如何使用MongoDB
4.1 连接MongoDB
MongoDB 默认监听在 27017 端口,我们可以通过 mongo 命令连接 MongoDB 数据库。
mongo
连接成功后显示以下类似信息:
MongoDB shell version v3.2.7
connecting to: mongodb://127.0.0.1:27017
MongoDB server version: 3.2.7
Server has startup warnings:
2016-07-26T15:55:08.126+0800 I CONTROL [initandlisten]
2016-07-26T15:55:08.126+0800 I CONTROL [initandlisten] ** WARNING: /sys/kernel/mm/transparent_hugepage/enabled is 'always'.
2016-07-26T15:55:08.126+0800 I CONTROL [initandlisten] ** We suggest setting it to 'never'
2016-07-26T15:55:08.126+0800 I CONTROL [initandlisten]
4.2 创建数据库
使用命令 use DATABASE_NAME
来创建一个数据库。
例如来创建一个名为 runoob 的数据库:
use runoob
4.3 创建集合
集合类似于 RDBMS 中的表,它用于存储数据。使用 db.createCollection(name, options)
命令来创建集合。
例如来创建一个名为 mycol 的集合:
db.createCollection("mycol")
options 参数是可选的,用于指定有关内存大小及索引的选项。
例如实例创建了一个最大为 6142800KB, 文档数上限为 10000 个,过期后 10 秒删除的集合:
db.createCollection("mycol", { capped : true, autoIndexId : true, size : 6142800, max : 10000, expireAfterSeconds: 10 } )
4.4 插入文档
使用 db.collection.insert()
或db.col.insert()
方法向集合中插入文档。
例如我们将文档插入到名为 mycol 的集合中:
db.mycol.insert({title: 'MongoDB 教程', description: 'MongoDB 是一个 Nosql 数据库', by: '菜鸟教程', likes: 100, tags: ['mongodb', 'database', 'NoSQL']})
4.5 查询文档
使用 db.collection.find()
或db.collection.findOne()
方法来查询集合中的文档。
例如,下面的示例检索 mycol 集合中 title 字段等于 "MongoDB 教程" 的所有文档:
db.mycol.find({title: 'MongoDB 教程'})
4.6 更新文档
使用 db.collection.update()
或 db.collection.updateOne()
或 db.collection.updateMany()
方法来更新集合中的文档。
例如,下面的示例将 mycol 集合中 title 字段等于 "MongoDB 教程" 的文档的 likes 字段更改为 200:
db.mycol.update({title: 'MongoDB 教程'}, {$set: {likes:190}})
4.7 删除文档
使用 db.collection.remove()
或 db.collection.deleteOne()
或 db.collection.deleteMany()
方法从集合中删除文档。
例如,下面的示例将 mycol 集合中 likes 字段等于 200 的文档删除:
db.mycol.remove({likes:200})
总结
本文主要介绍了 MongoDB 的特点以及使用方法,从搭建环境到基本操作都进行了讲解。MongoDB是互联网应用中非常重要的NoSQL数据库之一,我们可以利用它解决一些基本数据存储、查询等问题。