0.写在前面
近年来后端nodejs+MongoDB的搭配好像比世界上最好的语言PHP+MySQL要火得多。虽然我node不怎么行,但是MongoDB还是要学一下的,PHP也能搭MongoDB。不过MySQL 5.7新特性终于支持json了,好像也还行,多一种选择。
1.NoSQL
NoSQL,泛指”非关系型数据库”。我们经常会用到”key-value”、文档的形式来储存数据,前者代表Redis,后者我想就是MongoDB了。
当然NoSQL储存的数据结构都比较简单,彼此间没有硬性关联,灵活性比较强。
MongoDB的collection相当于SQL的table,field相当于column,_id为主键,同样也能建立index(索引)。
2.MongoDB基本用法
创建和删除数据库
|
|
增删查改
文档的数据结构和JSON基本一样。
所有存储在集合中的数据都是BSON格式。
BSON是一种类json的一种二进制形式的存储格式,简称Binary JSON。
insert
|
|
document需为json格式。
remove
|
|
find
语句很简单
and条件查询直接在小括号加json查询条件{key1: value1}, {key2:value2}。
需要注意的是or条件查询,是这样的:
条件操作符
是dollar+英文缩写
- (>) 大于 - $gt
- (<) 小于 - $lt
- (>=) 大于等于 - $gte
- (<= ) 小于等于 - $lte
|
|
我找到了缩写说明…
$gt ——– greater than >
$gte ——— gt equal >=
$lt ——– less than <
$lte ——— lt equal <=
$ne ———– not equal !=
$eq ——– equal =
排序
查找排序
limit和skip
可以用来做分页功能,跟MySQL差不多
update
|
|
参数说明
- query : update的查询条件,类似sql update查询内where后面的。
- update : update的对象和一些更新的操作符(如$,$inc…)等,也可以理解为sql update查询内set后面的
- upsert : 可选,这个参数的意思是,如果不存在update的记录,是否插入objNew,true为插入,默认是false,不插入。
- multi : 可选,mongodb 默认是false,只更新找到的第一条记录,如果这个参数为true,就把按条件查出来多条记录全部更新。
- writeConcern :可选,抛出异常的级别。
3.2新特性
db.collection.updateOne() 向指定集合更新单个文档
db.collection.updateMany() 向指定集合更新多个文档
save
save和update不同,会直接替换全部数据
备份与恢复
语法也跟MySQL差不多,不指定数据库的话会直接备份全部。
最基本的用法就是上面这些啦,Nodejs有个扩展Mongoose,效率比较高,相比Nodejs-mongodb扩展不用频繁open和close连接
参考文档:菜鸟教程-MongoDB