NodeJs06

2017-07-23  本文已影响0人  社会你码ge

数据库 databases

--------------------------------------------

1.1 数据库的作用

# 存储数据

1.2 数据库的分类

1.2.1 结构型数据库也叫关系型数据库

MySQL、SQL Server、Oracle、Access等等

采用SQL语言,管理数据库

结构型数据库的特点

# 数据库里面有表,表有行和列的概念,每个表中,都有明确的字段,每行记录,都有这些字段。不能有的行有,有的行没有。

1.2.2 非结构型数据库

mongodb

非结构型数据库的特点

# 没有行、列的概念。用JSON来存储数据

# 集合就相当于“表”,文档就相当于“行”

# 文档就是json 可以通过javascript进行操作

为什么不用txt文档或者excell来存储数据

# 当数据比较大的时候,对文档的读取是一次性读取,内存不够,而数据库读取是分段读取的

# 增删改查不方便

结构型数据库和非结构型数据库的不同点

结构型数据库存储数据不灵活,一个字段,需要是同样类型的数据。不能一行记录字符串,一行记录是数字。

非结构型数据库的特点:

# 数据模型比较简单

# 对数据库性能要求较高

# 不需要高度的数据一致性

----------------------------

mongodb 安装

1. 下载 https://www.mongodb.com/download-center#community

安装过程中可以对安装路径进行更改,建议不更改

# 数据库的运行文件的位置和数据库存储的位置不是一回事

2. 安装成功后添加环境变量

eg:将mongo的bin目录 C:\Program Files\MongoDB\Server\3.0\bin  加入到系统的path环境变量中

为什么要添加环境变量

# 可以在不同的目录下执行mongodb的相关应用操作

3. 环境变量添加成功后,可以在系统的任何盘符,使用mongo的命令了

4. 常用命令操作

mongod 开启数据库

mongo 操作数据库

mongoimport 导入数据库

5. 开启数据库

在32位操作系统中 执行以下操作

mongod --dbpath C:\data  --storageEngine=mmapv1

在64位系统中

mongod --dbpath C:\data

注意:

# 如果光标挂起,说明数据库开启成功

# --dbpath就是选择数据库文档所在的文件夹

# --storageEngine=mmapv1 指定存储格式,64位不需要指定

# 在mongoDB中,有物理文件对应一个个数据库,U盘可以拷走  以ns结尾的文件即为数据库。

6. 操作数据库 执行mongo 命令

# 一定要确保在操作数据库之前数据库已经开启了,不能关,不能ctrl+c。 一旦这个cmd有问题了,数据库就自动关闭了。

######################

以上操作步骤,可以创建n个不同目录下的数据库存储的地方,每次开始数据库都要执行以上操作,比较麻烦,为了简化操作,可以让mongodb成为电脑的服务,那么采用开始mongodb服务每次都能快速启动数据库,并且进入到指定的数据库存储的地方  注意以管理员的方式进行安装

32位操作系统:

mongod --dbpath "D:\Data\db" --logpath "D:\Data\log\log.txt" --serviceName "MongoDb" --serviceDisplayName "mongodb" --journal --storageEngine=mmapv1  --install

64位:

mongod --dbpath "C:\data\db" --logpath "C:\data\log\log.txt" --serviceName MongoDB --install

# --serviceName 服务名称 建议MongoDB

# --serviceDisplayName window组件的显示名称 可以跟服务名称不一致

# 移除服务 将install改为remove即可

2.然后启动  必须在管理员的权限下启动

net start MongoDB  启动mongodb

net stop MongoDB  关闭mongodb

##############################

7. 操作数据库的相关指令 以下操作是mongodb的语法

7.1 show dbs

# 列出所有的数据库

7.2 use 数据库名字

# 使用某个数据库

# 如果use一个不存在的,就是新建一个数据库

7.3 db

# 查看当前所在数据库

7.4 db.students.insert({"name":"laowang","age":100});

# 向当前数据库所在的集合中插入一条数据

# db 表示当前所在的数据库

# students 代表是一个集合,一个数据库里面可以有很多个集合

# students第一次使用,集合将自动创建,集合中存储的每一条json数据叫做文档

7.5 show collections

显示当前数据中的集合

7.6 db.students.find()

查看当前集合中的所有文档

7.7 db.dropDatabase()

删除当前所在的数据库

7.8 db.studetns.drop()

删除数据库中的指定集合

7.9 db.studetns.count()

查看当前集合中有多少条数据

8. 插入数据

插入一条文档

eg:db.student.insert({"name":"xiaoming"});

插入多条文档

eg: db.student.insert([{"name":"laowang"},{"name":"laozhang"}]);

# 我们不可能一条一条的insert。所以,我们希望用sublime在外部写好数据库的形式,然后导入数据库:

mongoimport --db test --collection restaurants --drop --file primer-dataset.json

--db test  想往哪个数据库里面导入

--collection restaurants  想往哪个集合中导入

--drop 把集合清空

--file primer-dataset.json  哪个文件

9. 查找数据

查找数据,用find。find中没有参数,那么将列出这个集合的所有文档:

db.restaurants.find()

精确匹配:

db.student.find({"score.shuxue":70});

多个条件:

db.student.find({"score.shuxue":70 , "age":12})

大于条件:

db.student.find({"score.yuwen":{$gt:50}});

或者。寻找所有年龄是9岁,或者11岁的学生

db.student.find({$or:[{"age":9},{"age":11}]});

查找完毕之后,打点调用sort,表示升降排序。

db.restaurants.find().sort( { "borough": 1, "address.zipcode": 1 } )

10. 修改数据

查找名字叫做小明的,把年龄更改为16岁:

db.student.update({"name":"小明"},{$set:{"age":16}});

查找数学成绩是70,把年龄更改为33岁:

db.student.update({"score.shuxue":70},{$set:{"age":33}});

更改所有匹配项目:

db.student.update({"sex":"男"},{$set:{"age":33}},{multi: true});

完整替换,不出现$set关键字了:

db.student.update({"name":"小明"},{"name":"大明","age":16});

10. 删除数据

只要匹配成功,就会删除

db.restaurants.remove( { "borough": "Manhattan" } )

删除一条

db.restaurants.remove( { "borough": "Queens" }, { justOne: true } )

上一篇下一篇

猜你喜欢

热点阅读