美文网首页我爱编程
MongoDb简单使用

MongoDb简单使用

作者: ceido | 来源:发表于2018-01-18 00:50 被阅读0次
    1.NoSQL 介绍

    NoSQL(NoSQL = Not Only SQL ),意即“不仅仅是 SQL”, 它指的是非关系型的数据库,是以 key-value形式存储,和传统的关系型数据库不一样, 不一定遵循传统数据库的一些基本要求,比如说遵循 SQL 标准、ACID 属性、表结构等等。 NoSQL 最早被提出是在 20 世纪 80 年代,在当时更多是强调的是与关系数据库区别对待, 最近这些年被提及的更多是强调协助解决大数据等相关问题。 NoSQL 在大数据时代有自己的意义。

    2.NoSql 和传统数据库简单对比。

    非结构型数据库。 没有行、列的概念。 用 JSON 来存储数据。(对于不会sql的人可以降低学习成本。)

    3.MongoDb 介绍

    MongoDB 是一个介于关系数据库和非关系数据库之间的产品, 是非关系数据库当中功能最丰富,最像关系数据库的。他支持的数据结构非常松散,是类似 json 的 bson 格式,因此可以存储比较复杂的数据类型。 Mongo 最大的特点是他支持的查询语言非常强大,其语法有点类似于面向对象的查询语言, 几乎可以实现类似关系数据库单表查询的绝大部分功能,而且还支持对数据建立索引。它的特点是高性能、 易部署、易使用, 存储数据非常方便。

    4.MongoDb 安装

    官网下载: https://www.mongodb.com/
    我下载的是这个版本:

    image.png

    安装过程可能遇到:无法安装图形化界面compass,导致安装一直卡住。可以关闭窗口重新安装,重新安装时取消勾选安装图形化界面compass。

    安装完成后配置环境变量将bin路径加入到系统的path 环境变量中。

    打开 cmd 输入 : mongo命令看看是否成功。如果出来下图说明 mongodb 配置成功。

    image.png
    5. 使用 MongoDb

    (1)先新建一个存放数据库的文件夹, 注意:不能有中文和空格,建议不要放在 C 盘
    (2)启动 MongoDb 服务
    mongod 开启数据库服务命令: mongod --dbpath D:\mongodb

    image.png

    (3)客户端输入命令连接服务端:mongo

    image.png
    6.建库、建表、查、改、增、删

    (1)命令:use person
    如果person数据库存在,则进入数据库。
    如果数据库未创建, 那么必须创建一个表并插入一个数据以来创建该数据库。
    数据库中不能直接插入数据,只能往集合(collections)中插入数据。 不需要专门创建集合,只需要写点语法插入数据就会创建集合student:
    db.student.insert({“name”:”xiaoming”})

    (2)命令:show dbs,可以看到所有的数据库,包括刚才创建的person,前面三个是本来就有的。


    image.png

    (3)命令:show collections,查看数据库中的表。还是要先进入数据库,下图可看到刚才创建的student表。


    image.png

    (4)删除数据库与删除表:
    删除当前所在的数据库:
    db.dropDatabase()
    删除指定的表: db.collections_name.drop()
    db.student.drop()
    ps:关于如何修改数据库名称:https://segmentfault.com/q/1010000000694527
    (5)插入(增加) 数据:
    db.表名.insert({"name":"zhangsan"})

    (6)查询:先列这几条。
    1、查询所有记录
    db.student.find()
    相当于: select* from student;

    2、查询去掉后的当前聚集集合中的某列的重复数据
    db.student.distinct("name")
    会过滤掉 name 中的相同数据
    相当于: select distict name from student;

    3、查询 age = 22 的记录
    db.student.find({"age": 22})
    相当于: select * from student where age = 22。

    4、匹配的数据的数量:count()
    db.student.find({"age": 22}).count()

    明天再写了。今天浪费了许多时间,很难受。

    更多关于查询:

    http://www.jb51.net/article/48216.htm
    http://blog.csdn.net/sgear/article/details/8649550
    (7)修改数据
    1.查找名字叫做小明的,把年龄更改为 16 岁:
    db.student.update({"name":"xiaoming"},{$set:{"age":16}})

    2.更改所有匹配项目:
    默认下,update()只更改第一个匹配项,但在方法传入第三个参数为{multi: true}时,可更改所有匹配项。
    db.student.update({"sex":"男"},{$set:{"age":33}},{multi: true})

    3.完全替换, 不出现$set 关键字了: 注意

    例:db.student.remove({"name": "xiaoming"});
    

    (8)删除数据:
    db.collectionsName.remove( { "borough": "Manhattan" } )
    默认下,remove()会删除所有的匹配项。可传入第二个参数{justOne: true}来只删除第一个匹配项。

    db.student.remove( { "age": 18}, { justOne: true } )

    清空表中所有数据:
    db.student.remove({})
    删除文档是永久性的,不能撤销,也不能恢复的。因此,在执行remove()函数前先用find()命令来查看下是否正确。

    7.关于ObjectId

    http://www.runoob.com/mongodb/mongodb-objectid.html
    MongoDB中的文档(对象)必须有一个"_id"键。这个键的值可以是任何类型的,默认是个ObjectId对象。

    在一个集合里面,每个文档都有唯一的"_id"值,来确保集合里面每个文档都能被唯一标识。

    MongoDB采用ObjectId,而不是其他比较常规的做法(比如自动增加的主键)的主要原因,因为在多个 服务器上同步自动增加主键值既费时又费力。
    当需要通过"_id"来查找对象时,不能直接查找,要先转化为ObjectID对象:

    var ObjectID = require('mongodb').ObjectID;
    var id = new ObjectID(id);
    
    8.Nodejs 自启动工具 supervisor

    supervisor 会不停的 watch 你应用下面的所有文件,发现有文件被修改,就重新载入程序文件这样就实现了部署,修改了程序文件后马上就能看到变更后的结果。(但是当有错误时还是要重新启动。)
    (1) 首先安装 supervisor
    npm install -g supervisor
    (2) 使用 supervisor 代替 node 命令启动应用(要是命令再短点就更好了)


    image.png

    如有错误请斧正,感谢大家。

    相关文章

      网友评论

        本文标题:MongoDb简单使用

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