初识MongoDB

MongoDB是介于关系型数据库和非关系型数据库之间的一种非关系型数据库,并且MongoDB是非关系型数据库中最像关系型数据库的数据库。

MongoDB解决MySQL三高的问题

  1. 对数据库高并发写入需求
  2. 对海量数据高效率存储访问需求
  3. 对数据库高扩展和高可用的需求

MongoDB的实际应用

  1. 社交场景,比如朋友圈,附近的人的地点的存储
  2. 游戏场景,比如用户当前装备,得分等
  3. 物流场景,比如快递的位置,状态,途径
  4. 视频场景,比如直播中的点赞数和互动留言等

缺点

  1. 不支持事务
  2. 不支持多表联查

与MySQL的名词对比

SQL术语/概念

MongoDB术语/概念

解释/说明

database

database

数据库

table

collection

数据库表/集合

row

document

数据记录行/文档

column

field

数据字段/域

index

index

索引

table joins

表连接MongoDB不支持

primary key

primary key

主键,MongoDB自动将_id字段设置为主键

数据类型

数据类型

描述

举例

字符串

UTF-8字符串都可表示为字符串类型的数据

{"x":"foobar"}

对象id

对象id是文档的12字节的唯一ID

{"x":Objectld0}

布尔值

真或者假:true或者false

"x":true}+

布尔值

真或者假:true或者false

"x":true}+

数组

值的集合或者列表可以表示成数组

("x":["a","b","c"]}

32位整数

类型不可用。JavaScript仅支持64位浮点数,所以32位整数会被自动转换

shell是不支持该类型的,shell中默认会转换成64位浮点数

64位整数

不支持这个类型。shell会使用一个特殊的内嵌文档来显示64位整数

shell是不支持该类型的,shell中默认会转换成64位浮点数

64位浮点数

数shell中的数字就是这一种类型

{"x":3.14159,"y":3}

null

表示空值或者未定义的对象

("x":null)

undefined

文档中也可以使用未定义类型

{"x":undefined)

符号

shell不支持,shell会将数据库中的符号类型的数据自动转换成字符串

正则表达式

文档中可以包含正则表达式,采用JavaScript的正则表达式语法

{"x":/foobar/i}

代码

文档中还可以包含javaScript代码

{"x" : function({/*....*/}}

二进制数据

二进制数据可以由任意字节的串组成,不过shell中无法使用

最大值/最小值

BSON包括一个特殊类型,表示可能的最大值。shell中没有这个类型。

条件查询

操作

格式

范例

类似语句

等于

{<key>:<value>}

db. col. find({"by":" 张三丰 "}).pretty ( )

where by ='张三丰'

小于

{<key>: {$lt:<value>}}

db. col. find({"likes": {$lt:50}}).pretty ( )

where likes < 50

小于或等于

{<key>: {$lte:<value>}}

db. col. find({"likes": {$lte:50}}).pretty ( )

where likes <= 50

大于

{<key>: {$gt:<value>}}

db. col. find({"likes": {$gt:50}}).pretty ( )

where likes > 50

大于或等于

{<key>: {$gte:<value>}}

db. col. find({"likes": {$gte:50}}).pretty ( )

where likes >= 50

不等于

{<key>: {$ne:<value>}}

db. col. find({"likes": {$ne:50}}). pretty ( )

where likes != 50

AND 和 OR 联合使用,类似常规 SQL 语句为: 'where key1>value1 AND (key2 = value2 OR key3 = value3)'

db.col.find({"key1": {$gt:value1}, $or: [{"key2": "value2"},{"key3": "value3"}]})

MongoDB范围条件

col"集合中 "key" 大于100,小于 200 的数据

db.col.find({"key" : {$lt :200, $gt : 100}})

相当于RDBMS: Select * from col where key>100 AND key<200;

MongoDB的模糊查询 (包含使用 /target/ 开头 /^target/ 结尾 /target$/)

查询 name 包含"小"字的文档

db.col.find({"name":/小/})

查询 name 字段以"小"字开头的文档

db.col.find({"name":/^小/})

查询 name字段以"小"字结尾的文档

db.col.find({"name":/小$/})

MongoDB的Limit 和 Skip操作

指定取出文档条数 limit()

db.col.find().limit(NUMBER)

使用skip()方 法来跳过指定数量的数据

db.col.find().limit(NUMBER).skip(NUMBER)

MongoDB的统计

在 MongoDB 中使用count() 来统计个数

db.col.count({key:value})

MongoDB的排序

在 MongoDB 中使用 sort() 方法对数据进行排序,sort() 方法可以通过参数指 定排序的字段,并使用 1 和 -1 来指定排序的方式,其中 1 为升序排列,而 1 是用于降序排列。

db.col.find().sort({KEY:1})

索引

  1. 查看索引

db.collection.getIndexes()

  1. 创建索引(单个索引,复合索引)

db.collection.createIndex(keys,option)

例如: db.col.createIndex({username:1【, key:1】})

  1. 删除索引

db.collection.dropIndex(index)

例如: db.col.dropIndex({username:1})

  • 28
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值