NodeJs06

作者: 社会你码ge | 来源:发表于2017-07-23 23:35 被阅读0次

    数据库 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 } )

    相关文章

      网友评论

          本文标题:NodeJs06

          本文链接:https://www.haomeiwen.com/subject/etdvkxtx.html