day8学习笔记

2016年数据库排行榜前十数据库简单介绍:

数据库使用热度排行榜
  1. Oracle是甲骨文公司的,使用需要付费,非开源的
  2. MySQL目前很多公司都在使用,已经被甲骨文收购,之前是开源的,但是现在也有很多功能已经开始封装,非完全开源了
  3. windows上的数据库,早年间很多游戏平台使用的是这个数据库
  4. MongoDB 近年来发展起来的文档类型数据库,增长较快,配合nodeJS使用
  5. PostgreSQL 暂时不知道
  6. DB2...
  7. Cassandra...
  8. Microsoft Acess...
  9. SQLite 小型,轻量型关系型数据库,目前安卓,苹果端机子本地存储使用的是SQLite数据库
  10. Redis 是一种nosql,其他暂时不知道...

MongoDB简介

MongoDB是一个基于分布式文件存储的数据库,由C++语言编写,旨在为WEB应用提供可扩展的高性能数据库存储方案,MongoDB是一个介于关系数据库和非关系数据库之间的产品,是非关系数据库当中功能最丰富,最像关系数据库的.

MongoDB安装

Linux平台安装MongoDB-->下载地址
选择对应的版本进行下载,在此,我选择的是ubuntu16.04 64位的版本的下载

下载指令:curl -o  https://www.mongodb.com/dr/fastdl.mongodb.org/linux/mongodb-linux-x86_64-ubuntu1604-3.2.9.tgz/
解压指令:tar -zxvf mongodb-linux-x86_64-ubuntu1604-3.2.9.tgz
将解压包拷贝到指定目录:mv mongodb-linux-x86_64-ubuntu1604-3.2.9 指定目录(在此,我拷贝到了/usr/local/mongodb)
Mongodb可执行文件位于bin目录下,所以可以将其添加到path路径中:
export PATH=<mongodb-install-directory>/bin:$PATH
在此我的为:export PATH = /usr/local/mongodb/bin:$PATH
创建数据库目录:
Mongodb数据存储在data目录的db目录下,但是这个目录在安装过程中不会自动创建,所以需要手动创建data目录,并在data目录中创建db目录
注意:/data/db是MongoDB默认的启动数据库路径(--dbpath)
mkdir -p /data/db 如果数据库目录不是/data/db目录,可以通过--dbpath来指定
# 进入mongodb/bin目录下,执行./mongod启动mongodb   ./mongod &这是表示在后台启动(如果不这样启动,那么这个窗口就不能使用了,他会在前台执行...针对ubuntu服务器)
#  MongoDB后台管理Shell
如果需要进入MongoDB后台管理,你需先打开mongodb装目录的下的bin目录,然后执行mongo命令文件.
MongoDB Shell是MongoDB自带的交互式javascript shell,用来对mongodb进行操作
cd /usr/local/mongodb/bin
./mongo
......
MongoDB web用户界面

MongoDB提供了简单的HTTP用户界面,如果你想启用该功能,需要在启动的时候指定参数 --rest.

.mongod --dbpath = /data/db --rest
MongoDB的web界面访问端比服务的端口多1000.如果你的mongodb运行端口使用27017,你可以在端口号为28017访问web用户界面.即http://localhost:28017.

创建数据库

# 创建语法如下:
use DATABASE_NAME   如果数据库不存在,则创建数据库,否则切换到指定数据库
实例:
>use edwin
switched to db edwin
>db
edwin
# 如果想查看所有数据库,可以使用show dbs命令,
刚创建的数据库edwin并不会被show出来,如果要显示,我们需要向edwin插入一些数据

删除数据库

# MongoDB删除数据库的语法格式如下:
db.dropDatabase()
删除当前所使用的数据库,默认情况下test
实例:
删除我们之前创建的数据库edwin
>show dbs   查看当前所有的数据库
....
>use edwin   进入之前创建的数据库 edwin
...
>db.dropDatabase()   删除数据库edwin
...
>show dbs    查看是否已经删除成功
# 删除集合的语法格式如下
db.collection.drop()

MongoDB插入文档

文档的数据结构和json基本一样,所有存储在集合中的数据都是BSON格式
BSON是一种类json的一种二进制形式的存储格式,简称Binary JSON
# 插入文档
MongoDB使用insert()或save()方法向集合中插入文档,语法如下:
db.COLLECTION_NAME.insert(document);
# 实例
以下文档可以存储在MongoDB的edwin数据库的col集合中
>db.col.insert({title:"MongoDB教程",
description:"MongoDB是一个Nosql数据库",
byb:"哈哈",
tags:["MongoDB","database","NoSQL"],
likes:100
})
以上实例中col是我们的集合名,如果该集合不存在该数据库中,mongoDB会自动创建该集合并插入文档,
查看已插入文档:
>db.col.find()
# 第二种插入数据的库方式
我们可以将数据定义为一个变量
> document = ({title:"haha"});
执行后显示该变量的值
然后执行插入操作
>db.col.insert(document)
# 插入文档也可以使用db.col.save(document)命令.
如果不指定_id字段save()方法类似与inset方法,如果指定id字段,
则会更新该_id的数据.

MongoDB更新文档

MongoDB使用update()和save()方法来更新集合中的文档

#update()方法
语法格式:
db.collection.update(
  <query>,
  <update>,
  {
    upset:<boolean>,
    multi:<boolean>,
    writeConcern:<document>
  }
)
参数说明:
query:update的查询条件,类似sql update查询内的where后面的.
update:update的对象和一些更新的操作符(如$,$inc...),也可以理解为sql update查询内的set后面的
upset:可选,这个参数的意思是,如果不存在update的记录,是否插入objNEW,true为插入,默认是false,不插入.
multi:可选,mongoDB默认是false,只更新找到的第一条记录,如果这个参数为ture,就
把按条件查出来的多条记录全部更新.
writeConcern:可选,抛出异常的级别
实例:
db.col.update({''title':'MongoDB教程'},{$set:{'title':'MongoDB'}})
db.col.find().pretty()
注意:find后加pretty(),是说让查找的内容以集合的形式展示,一行一条记录,比较直观
# save方法
save()方法通过传入的文档来替换已有的文档,语法格式如下:
db.collection.save(
  <document>,
  {
    writeConcern:<document> 
  }
)
参数说明:
document:文档数据
writeConcern:可选,抛出异常的级别
实例:
db.col.save({ "_id" : ObjectId("56064f89ade2f21f36b03136"),
 "title" : "MongoDB", 
"description" : "MongoDB 是一个 Nosql 数据库", 
"by" : "Runoob", 
"url" : "http://www.runoob.com", 
"tags" : [ "mongodb", "NoSQL" ],
 "likes" : 110
})
db.col.find().pretty()  进行查询是否更新完成

MongoDB删除文档

MongDB remove()函数式用来移除集合中的数据,MongoDB数据更新可以使用
update()函数,在执行remove函数前先执行find()命令来判断执行的条件是否正确,这是
一个比较好的习惯
语法格式:
db.collection.remove(
  <query>,
  <justOne>
)
参数说明
query:(可选参数)删除的文档的条件
justOne:(可选参数)如果设置为true或1,则只删除一个文档
writeConcern:(可选参数)抛出异常的级别)
>db.col.remove({'title':'MongoDB教程'})
WriteResult({"nRemoved":2})   #删除了两条数据
>db.col.find()  查看是否已经删除成功

MongoDB查询文档

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

推荐阅读更多精彩内容