MongoDB 的安装和使用

文/Xie 2016-03-04 02:39:00

简介

MongoDB 是一个基于分布式文件存储的数据库,旨在为 WEB 应用提供可扩展的高性能数据存储解决方案。本文将带领大家在 Linux 操作系统下安装 MongoDB。

我们所使用的环境是: 美团云主机: 2CPU、2G内存、50G磁盘 OS: CentOS 6.5 DB: MongoDB 3.0.7

安装 MongoDB

Linux 下安装 MongoDB

MongoDB 提供了 Linux 平台上32位和64位的安装包,可以在官网下载安装包,下载地址为:http://www.mongodb.org/downloads。本文下载了 RHel 6 Linux 64-bits 的 MongoDB 3.0.7。

curl -O https://fastdl.mongodb.org/linux/mongodb-linux-x86_64-rhel62-3.0.7.tgz     # 下载我们需要的 MongoDB 安装包
tar -zxvf mongodb-linux-x86_64-rhel62-3.0.7.tgz     # 解压
mv mongodb-linux-x86_64-rhel62-3.0.7 /usr/local/mongodb     # 将解压包拷贝到指定目录,MongoDB 将运行

MongoDB 的可执行文件位于 bin 目录下,可以将其添加到 PATH 路径中:

export PATH=<mongodb-install-directory>/bin:$PATH

<mongodb-install-directory> 为 MongoDB 的安装路径,如本文中的 /usr/local/mongodb。可以在 ~/.bashrc 中添加一行:

export PATH=/usr/local/mongodb/bin:$PATH

运行 MongoDB

在首次启动 Mongod之前,需要创建数据库文件目录,并确保启动的用户对该目录有读写权限。/data/db 是 MongoDB 默认的数据库目录。

mkdir -p /data/db

启动 MongoDB 的命令语法为:

mongod --dbpath <path to data directory>

当前为默认的数据库文件目录,可以直接输入:

mongod

可以看到如下启动信息,其中端口号为27017。

...
2015-12-04T12:43:40.448+0800 I NETWORK  [initandlisten] waiting for connections on port 27017

停止 MongoDB,按 “Ctrl + C” 键即可。

使用 MongoDB

连接到数据库

Mongo Shell 是 MongoDB 自带的交互式 Javascript shell,用来对 MongoDB 进行操作和管理。

在命令行提示符下,输入 mongo 命令启动 mongo 程序连接到一个 mongod。默认情况下,mongo 程序会连接到本机 localhost 的27017端口。

[root@mongodb ~]# mongo
MongoDB shell version: 3.0.7
connecting to: test
...
>

mongo 程序启动时,会默认选定 test 数据库。如果希望知道当前选定的数据库,执行 db 命令:

> db
test

查看数据库列表的命令为:

> show dbs
local  0.078GB

切换到一个新的数据库 testdb 的命令如下,可以通过打印 db 变量来确认当前是 testdb 数据库。这个时候如果输入 show dbs 命令,testdb 不会在列表中,是因为 MongoDB 不会真的在文件系统中创建一个数据库,除非有数据插入到这个数据库中。

> use testdb
switched to db testdb
> db
testdb
> show dbs
local  0.078GB

打印 mongo 帮助的命令为:

> help

使用集合和文档

创建两个以 j 和 k 命名的文档:

> j = { name : "mongo" }
{ "name" : "mongo" }
> k = { x : 3 }
{ "x" : 3 }

插入 j 和 k 文档到 tc 集合里面:

> db.tc.insert( j )
WriteResult({ "nInserted" : 1 })
> db.tc.insert( k )
WriteResult({ "nInserted" : 1 })

当插入第一个文档的时候,mongod 会同时创建 testdb 数据库和 tc 集合。验证 tc 集合存在的命令如下。mongo shell 会打印出当前数据库内的所有集合。所有 mongod 数据库都包含一个 system.indexes 集合。

> show dbs
local   0.078GB
testdb  0.078GB
> show collections
system.indexes
tc

使用 find() 方法确认 tc 集合内有文档存在。所有 MongoDB 文档必须有值唯一的 _id 字段。

> db.tc.find()
{ "_id" : ObjectId("56611c71302fcd9c6d200ca8"), "name" : "mongo" }
{ "_id" : ObjectId("56611c72302fcd9c6d200ca9"), "x" : 3 }

也可以通过循环的方式插入数据,使用 limit() 方法限制返回文档的数目,使用 { "fname" : "zhoulf2" } 来查询所有字段 fname 的值是 zhoulf2 的文档。

> for (var i = 1; i <= 5; i++) db.user.insert({ "fname" : "zhoulf"+i, "company" : "navinfo"+i });
WriteResult({ "nInserted" : 1 })
> db.user.find().limit(3)
{ "_id" : ObjectId("56611d41302fcd9c6d200caa"), "fname" : "zhoulf1", "company" : "navinfo1" }
{ "_id" : ObjectId("56611d41302fcd9c6d200cab"), "fname" : "zhoulf2", "company" : "navinfo2" }
{ "_id" : ObjectId("56611d41302fcd9c6d200cac"), "fname" : "zhoulf3", "company" : "navinfo3" }
> db.user.find( { "fname" : "zhoulf2" } )
{ "_id" : ObjectId("56611d41302fcd9c6d200cab"), "fname" : "zhoulf2", "company" : "navinfo2" }

退出数据库

删除数据库的命令如下:

> db
testdb
> db.dropDatabase()
{ "dropped" : "testdb", "ok" : 1 }
> db
testdb

退出 mongo 的命令为:

> exit
bye
[root@mongodb ~]#

总结

MongoDB 中的数据库等同于 SQL 中的数据库,集合等同于表,文档等同于行,字段等同于列。MongoDB 是非关系数据库当中功能最丰富,最像关系数据库的产品;它将数据存储为一个文档,数据结构由键值(key=>value)对组成。

知识共享许可协议
本作品采用 知识共享署名-非商业性使用-相同方式共享 4.0 国际许可协议 进行许可。

最新文章 全部