MongoDB 是一个基于分布式文件存储的数据库。由C++语言编写。旨在为WEB应用提供可扩展的高性能数据存储解决方案。
安装MongoDB
scons all
- 新建
mongoldb
目录,将解压后的mongodb-osx-x86_64-3.2.9
文件中的bin
目录移动到mongodb
根目下
cp -r bin/ ~/mongodb
在mongoldb
目录下,创建data
目录,用于放置mongoldb
数据。在目录下,创建log
目录,用于放置mongodb
日志,以及conf
目录,并在conf
目录下,新建mongod.conf
文件。
mkdir mongodb
cd mongodb
mkdir data
mkdir log
mkdir conf
cd conf
编辑mongod.conf
文件,vi mongod.conf
:
port = 1234
dbpath = data
logpath = log
fork = true
MongoDB的启动和连接
- 开启
mongodb
,执行如下命令
bin/mongod -f conf/mongod.conf //使用配置文件启动mogodb
- 使用
mongo
连接数据库
./bin/mongo 127.0.0.1:1234/test //12345是端口号,替换为自己的
- 关闭数据库连接
db.shutdownServer()
名词解释
文档
文档是MongoDB
的核心概念,多个键及其关联的值有序地放置在一起便是文档。 是一个json
数据:
{name: 'jewelz', age: 22}
MongoDB
不单区分类型,也区分大小写,还有,MongoDB
的文档不能有重复的键。
集合
集合是一组文档。如果说MongoDB
中的文档类似于关系型数据库中的行,那么集合就如同表。
数据库
MongoDB
中多个文档组成集合,同样多个集合可以组成数据库。一个MongoDB
实例可以承载多个数据库,数据库名可以是满足以下条件的任意UTF-8字符串
- 不能是空字符串("")
- 不能含有''(空格)、.、$、/、\和\0(空字符)
- 应全部小写
- 最多64字节
数据类型
MongoDB
支持许多数据类型的列表下面给出:
类型|说明
:—: | : —
String
| 这是最常用的数据类型来存储数据。在MongoDB中的字符串必须是有效的UTF-8。
Integer
| 这种类型是用来存储一个数值。整数可以是32位或64位,这取决于您的服务器。
Boolean
| 此类型用于存储一个布尔值 (true/ false) 。
Double
| 这种类型是用来存储浮点值。
Min/ Max keys
| 这种类型被用来对BSON元素的最低和最高值比较。
Arrays
| 使用此类型的数组或列表或多个值存储到一个键。
Timestamp
| 时间戳。这可以方便记录时的文件已被修改或添加。
Object
| 此数据类型用于嵌入式的文件。
Null
| 这种类型是用来存储一个Null值。
Symbol
| 此数据类型用于字符串相同,但它通常是保留给特定符号类型的语言使用。
Date
| 此数据类型用于存储当前日期或时间的UNIX时间格式。可以指定自己的日期和时间,日期和年,月,日到创建对象。
Object ID
| 此数据类型用于存储文档的ID。
Binary data
| 此数据类型用于存储二进制数据。
Code
| 此数据类型用于存储到文档中的JavaScript代码。
Regular expression
| 此数据类型用于存储正则表达式
MongoDB的基本命令
use命令
MongoDB use DATABASE_NAME
用于创建数据库。该命令将创建一个新的数据库,如果它不存在,否则将返回现有的数据库。
show dbs //查看数据库
user test //使用数据库,没有会自动创建
dropDatabase() 方法
MongoDB db.dropDatabase()
命令是用来删除一个现有的数据库。
dropDatabase()
命令的基本语法如下:
db.dropDatabase()
drop() 方法
MongoDB db.collection.drop()
是用来从数据库中删除一个集合。
insert() 方法
要插入数据到 MongoDB
集合,需要使用MongoDB
的 insert()
或 save()
方法。
db.test_collection.insert({name:'hu',age:22})
find() 方法
要从MongoDB
查询集合数据,需要使用MongoDB
的 find()
方法。
> db.test_collection.find()
{ "_id" : ObjectId("57e73cc5507aa7b3041a2a71"), "name" : "hu", "age" : 22 }
{ "_id" : ObjectId("57e74454507aa7b3041a2a72"), "name" : "张三", "age" : 22 }
{ "_id" : ObjectId("57e74463507aa7b3041a2a73"), "name" : "李四", "age" : 22 }
还可以根据条件查询
db.test_collection.find({name:'hu'})
update()方法
使用update()更新数据,接受两个参数,一个为要更新的数据,后一个为更新的数据
db.test_collection.update({name:'hu'},{name:'hu', age:100})
如果这样 db.test_collection.update({name:'hu'},{age:100}),则会覆盖掉原来的数据,变成这样:
{ "_id" : ObjectId("57e73cc5507aa7b3041a2a71"), "age" : 22 }
所以更新部分数据,使用set:
db.test_collection.update({name:'hu'},{$set:{age:100}})
当update不存在的数据时,可以将第三个参数设置为true,会自动插入数据
db.test_collection.update({name:'王小二'},{name:'王小二', age:100},true)
默认情况下mongodb只会更新满足条件的第一条数据,如果想更新满足条件的所以数据,可以将第四个参数设置为true
remove()方法
使用remove()
删除数据,为了安全,remove()
必须传递参数
db.test_collection.remove({name:'hu'})
Limit() 方法
要限制 MongoDB
中的记录,需要使用 limit()
方法。 limit()
方法接受一个数字型的参数,这是要显示的文档数。
语法:
db.COLLECTION_NAME.find().limit(NUMBER)
limit()
与skip()
结合使用
db.test_collection.find().skip(3).limit(3).sort({age:1}) //表示跳过前面3条数据,查找3条数据,并以`age`升序排列
下一章讲解mongoDB
索引的相关知识,最后我会以node.js+mongodb+pug模板引擎搭建个人博客系统
为主题,来展示mongoDB
的实际应用,敬请期待:)