MongoDb简单使用

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

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

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 212,294评论 6 493
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 90,493评论 3 385
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 157,790评论 0 348
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 56,595评论 1 284
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 65,718评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 49,906评论 1 290
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,053评论 3 410
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,797评论 0 268
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,250评论 1 303
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,570评论 2 327
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,711评论 1 341
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,388评论 4 332
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,018评论 3 316
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,796评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,023评论 1 266
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,461评论 2 360
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,595评论 2 350