day07 MongoDB基础语法

MongoDB
NoSQL,全称是”Not Only Sql”,指的是⾮非关系型的数据库。
非关系型数据库主要有这些特点:非关系型的、分布式的、开源的、水平可扩展的。
NoSQL 的拥护者们提倡运用非关系型的数据存储,通常的应用如:模式自由、支持简易易复制、简
单的 API、⼤大容量量数据等。
MongoDB 是⼀一个介于关系数据库和⾮非关系数据库之间的产品,是⾮非关系数据库当中功能最丰
富,最像关系数据库的。
MongoDB最⼤大的特点:它⽀支持的查询语⾔言⾮非常强⼤大,其语法有点类似于⾯面向对象的查询语⾔言,
⼏几乎可以实现类似关系数据库单表查询的绝⼤大部分功能。它是⼀一个⾯面向集合的,模式⾃自由的⽂文
档型数据库。
1、 ⾯面向集合(Collection-Orented)
意思是数据被分组存储在数据集中, 被称为⼀一个集合(Collenction)。每个集合在数据库中 都有
⼀一个唯⼀一的标识名,并且可以包含⽆无限数⽬目的⽂文档。集合的概念类似关系型数据库(RDBMS)⾥里里
的表(table),不不同的是它不不需要定义任何模式(schema)。
2、 模式⾃自由(schema-free)
存储在 MongoDB 数据库中的⽂文件,我们不不需要知道它的任何结构定义。提了了这 么多次”⽆无模
式”或”模式⾃自由”,它到是个什什么概念呢?例例如,下⾯面两个记录可以存在于同⼀一个集合⾥里里⾯面:
{“welcome” : “Beijing”}
{“age” : 28}
3、 ⽂文档型 意思是我们存储的数据是键-值对的集合,键是字符串串,值可以是数据类型集合⾥里里的任
意类型, 包括数组和⽂文档. ⽂文件存储格式为 BSON(⼀一种 JSON 的扩展)
适⽤用场景
1 ⽹网站数据:MongoDB ⾮非常适合实时的插⼊入,更更新与查询,并具备⽹网站实时数据存储所需的复制
及⾼高度伸缩性
2 缓存:由于性能很⾼高,MongoDB 也适合作为信息基础设施的缓存层。在系统重启之后, 由
MongoDB 搭建的持久化缓存层可以避免下层的数据源过载
3 ⼤大尺⼨寸,低价值的数据:使⽤用传统的关系型数据库存储⼀一些数据时可能会⽐比较昂贵,在此之前,很
多时候程序员往往会选择传统的⽂文件进⾏行行存储
4 ⾼高伸缩性的场景:MongoDB ⾮非常适合由数⼗十或数百台服务器器组成的数据库。MongoDB的路路
线图中已经包 对 MapReduce 引擎的内置⽀支持
5 ⽤用于对象及 JSON 数据的存储:MongoDB 的 BSON 数据格式⾮非常适合⽂文档化格式的存储及
查询
mongodb配置⽂文件
mongod.conf
dbpath=/Users/carmack/data/mongo
启动mongod
./mongod -f mongod.cnf
mongo客户端
进⼊入客户端
./mongo
查看数据库命令
show dbs
打开数据库
use taobao
查看集合(对应mysql table)
show collections
⽂文档:⽂文档(Document)是MongodDB中的核⼼心概念,他是MongoDB逻辑存储的最⼩小基本单
元, 对应mysql记录
集合:多个⽂文档组成的集合 对应mysql table
数据库:多个集合组成的数据库 对应mysql database
MongodDB的数据类型是:BSON的数据类型
BSON:是Binary JSON是⼆二进制的格式
创建数据库
use newdb1
show dbs
数据库并没有添加,当我们在给数据库中的集合插⼊入⼀一条⽂文档的时候就会⾃自动创建⼀一条⽂文档、⼀一个集合、⼀一
个数据库。
db.users.insert({"name": 'carmack'})
show colletions;
插⼊入⼀一条数据
db.users.insert({"uid":2,"uname":"carmack","isvip":true,"sex":null,"favorite":
["apple","banana",1,2,3,4,5],"regtime":new Date()})
查询数据
db.users.find()
db.users.findOne({"uid":2})
删除数据
db.users.remove({"uid":2})
清空集合
db.users.remove({})
删除集合
db.users.drop()
更更新⽂文档
第⼀一个⽂文档为查询的⽂文档,第⼆二个⽂文档为修改为什什么⽂文档, 后⾯面的⽂文档会覆盖我们要修改⽂文档的整个内容
db.users.update({"uid":2},{"uname":"jon"})
使⽤用修改器器inc更更新 对uid为2的⽤用户增加100块钱⼯工资 db.users.update({"uid":2},{"inc":{"salary":100}})
减100

db.users.update({"uid":2},{"inc":{"salary":-100}}) 添加⼀一个字段set修改器器
db.users.update({"uid":2},{"set":{"age":18}}) 删除⼀一个字段unset修改器器
db.users.update({"uid":2},{"unset":{"age":true}}) 数组的更更新 db.users.update({"uid":2},{"push":{"email":"a"}})
pushAll在元组中增加多个元素,但是他不不检查元素是否存在 db.users.update({"uid":2},{"pushAll":{"email":["a", "b","c","d"]}})
addToSet 往数组中添加⼀一个不不重复的元素 db.users.update({"uid":2},{"addToSet":{"email":"d"}})
添加多个不不重复的元素,这时候就得需要⽤用到*eache*操作符了了 db.users.update({"uid":2},{"addToSet":{"email":{"each":["e","g","f","d"]}}}) *删除数组元素* db.users.update({"uid":2},{"pop":{"email":-1}}) #从左侧删除⼀一个元素
db.users.update({"uid":2},{"pop":{"email":1}})#从右侧删除⼀一个元素 db.users.update({"uid":2},{"pull":{"email":"b"}}) #删除数组内的指定⼀一个元素
db.users.update({"uid":2},{"pullAll":{"email":["b","c"]}}) #删除数组内指定的多个元 素 数组元素的更更新 通过数组.下标修改 db.users.update({"uid":2},{"set":{"email.0":"tim.qq.com"}})
等于 =
db.users.find({"salary":3000}).pretty()
⼩小于 <
db.users.find({"salary":{lt:3000}}).pretty() ⼩小于等于 <= db.users.find({"salary":{lte:3000}}).pretty()
⼤大于 >
db.users.find({"salary":{gt:3000}}).pretty() ⼤大于等于 >= db.users.find({"salary":{gte:3000}}).pretty()
不不等于 !=
db.users.find({"salary":{ne:3000}}).pretty() MongoDB 的 find() ⽅方法可以传⼊入多个键(key),每个键(key)以逗号隔开,即常规 SQL 的 AND 条件 db.users.find({"id":2, "sex": "M"}).pretty() MongoDB OR 条件语句句使⽤用了了关键字or,语法格式如下:
db.users.find(
{
$or: [
{key1: value1}, {key2:value2}
]
}
).pretty()

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

推荐阅读更多精彩内容

  • 一、MongoDB简介 1.概述 ​ MongoDB是一个基于分布式文件存储的数据库,由C++语言编写。旨在为WE...
    郑元吉阅读 977评论 0 2
  • 1使用post请求爬取数据 当网页中的数据不是以get请求获取到的时候,就需要使用post请求去获取数据。 ses...
    barriers阅读 323评论 0 1
  • 1. 概念 NoSQL,全称是”Not Only Sql”,指的是⾮关系型的数据库。⾮关系型数据库主要有这些特点:...
    领带衬有黄金阅读 317评论 0 2
  • db的帮助文档 输入:db.help(); db.AddUser(username,password[, read...
    一秆子数码阅读 1,863评论 0 0
  • 简介 MongoDB 是一个基于分布式文件存储的NoSQL数据库 由C++语言编写,运行稳定,性能高 旨在为 WE...
    大熊_7d48阅读 36,835评论 1 9