MongoDB简单入门

MongoDB是一个高可用,高性能和自动扩展的开源的分布式面向文档的数据库。

核心概念

文档

文档是MongoDB中的数据的基本单元,类似关系型数据库中表中的行。它是由键值对组成的类似JSON格式的数据,例如:

{"id": 1, "name": "test"}

集合

集合由多个文档构成,类似关系听数据库中的表。与表不同的是,集合是无模式的,也就是说集成中可以存放不同格式的文档。
集合可以包含子集合,使用“.”字符来划分子集合。

数据库

多个集合可以组成一个独立的数据库,类似关系型数据库中的schema。一个MongoDB实例可以包含多个数据库,与关系型数据库类似。

支持的数据类型

MongoDB支持如下数据类型:

  1. String, UTF-8的字符串
  2. Integer, 32位和64位整数
  3. Boolean, 布尔值,true或者false
  4. Double, 64为浮点数
  5. Arrays, 数组
  6. Timestamp,时间戳
  7. Object,内嵌文档对象
  8. null,空值
  9. Symbol,符号类型
  10. Object ID,对象ID,12字节的唯一ID
  11. Binary Data,二进制数据
  12. Code,代码类型,可以包含JavaScript代码
  13. Regular Expression,正则表达式类型,JavaScript的正则语法

安装MongoDB

在Mac下使用brew来安装MongoDB。命令如下:

brew install mongodb

如果是其他操作系统,参见官方网站安装

启动MongoDB实例之前,请先创建MongoDB默认的数据库数据存放目录:/data/db,并确认是否有读写权限。然后直接运行mongod来启动MongoDB。如果成功启动,将会看到如下信息:

2016-04-23T17:29:32.610+0800 I NETWORK  [initandlisten] waiting for connections on port 27017

基本操作

通过MongoDB Shell来连接MongoDB实例执行管理操作。使用如下命令mongo来连接本地启动的数据库。如果需要连接远程的MongoDB实例,需要使用

mongo mongodb://{username}:{password}@{ip:port}/{db}

的格式来连接,其中username为用户名,password为密码,ip为远程主机的IP,port为MongoDB的连接端口,db为要连接的数据库。

数据库管理

查看当前MongoDB实例中的数据库
show dbs
创建数据库

如果该数据库不存在,则创建数据库;如果该数据库存在,则切换数据库。命令如下:

use test
删除数据库

先使用use命令切换到要删除的数据库下,使用如下命令来删除:

db.dropDatabase()

文档的增删改查

创建文档

使用如下命令来创建文档:

db.collection.insert(document)

其中collection为集合的名称,document为json格式的字符串。例如给blog创建一个post信息:

db.blog.insert({
"title": "MongoDB简单入门"
, "author": "Circle Wu"
, "content": "blog content"
})

那么就在blog集合中创建一个文档。

删除文档

使用如下命令来删除文档:

db.collection.remove(query)

其中collection为集合名称,query为删除文档的条件,例如:{"autor": "Circle Wu"}。例如删除上面创建的文档:

db.blog.remove({"autor": "Circle Wu"})
更新文档

使用如下命令来更新文档:

db.collection.update(query, document)

例如更新上面创建的文档:

db.blog.update({"title": "MongoDB简单入门"}, {
    "title": "MongoDB简单入门"
    , "author": "Circle Wu"
    , "Content": "Long Long ago"
})
查询文档

使用如下命令来查询文档:

db.collection.findOne(query)
db.collection.find(query)

findOne只返回query限定条件的一个结果,find返回全部结果。例如查询上面创建的文档:

db.blog.find()
条件语句

等于

{<key>:<value>}

小于

{<key>:{$lt:<value>}}

小于或等于

{<key>:{$lte:<value>}}

大于

{<key>:{$gt:<value>}}

大于或等于

{<key>:{$gte:<value>}}

不等于

{<key>:{$ne:<value>}}

and

{<key1>:<value1>, <key2>:<value2>}

or

{$or: [{key1: value1}, {key2:value2}]}

查看帮助

数据库级别的帮助命令

直接使用help命令来查看数据库级别的帮助命令

help

集合级别的帮助命令

使用如下命令来查看集合级别的帮助命令:

db.collection.help()