MongoDB入门教程:开启NoSQL之旅

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数据库之一,我们可以利用它解决一些基本数据存储、查询等问题。

数据库标签