Mongodb(非关系型数据库)的简单学习和基础语法

目录

mongodb优点:

mongodb缺点:

mongodb特点:

为什么学习mongodb

Mongodb名词概念

mongodb和mysql的对比

查看所有数据库:

创建数据库:

删除数据库

操作集合

创建集合:

查看集合:

删除集合:

Mongodb在集合中插入数据

Mongodb在集合中更新数据

Mongodb在集合中删除文档

Mongodb在集合中查询文档

Mongodb的查询条件​编辑

Mongodb的and条件

Mongodb的or条件

MongoDB的 And 与 Or 一起使用

Mongodb的范围条件

模糊查询

MongoDB的Limit 和 Skip操作

Mongodb统计

Mongodb排序


mongodb优点:

1.MongoDB的提供了一个面向文档存储,操作起来比较简单和容易。

2.如果负载的增加,它可以分布在计算机网络中的其他节点上这就是所谓的分片。

3. MongoDB支持各种编程语言:RUBY,PYTHON,JAVA,C++,PHP,C#等多种语言。

4.你可以通过本地或者网络创建数据镜像,这使得MongoDB有更强的扩展性。

mongodb缺点:

1. MongoDB 不支持事务

2. MongoDB 不能进行多表联查

mongodb特点:

无需要跨文档或跨表的事务及复杂的join查询支持

敏捷迭代的业务,需求变动频繁,数据模型无法确定

存储的数据格式灵活,不固定,或属于半结构化数据

业务并发访问量大

TB级以上的海量数据存储,且数据量不断增加

要求存储的数据持久化、不丢失

需要99.999%的数据高可用性

需要大量的地理位置查询、文本查询

为什么学习mongodb

MongoDB解决Mysql 的“三高”问题:

1.对数据库高并发写入需求

2.对海量数据高效率存储访问需求

3.对数据库高扩展和高可用的需求

MongoDB 实际应用:

1.社交场景,比如朋友圈,附近的人的地点的存储

2.游戏场景,比如用户当前装备,得分等

3.物流场景,比如快递的位置,状态,途径

4.视频场景,比如直播中的点赞数和互动留言等

Mongodb名词概念

mongodb和mysql的对比

查看所有数据库:

show dbs

有一些数据库名是保留的,可以直接访问这些有特殊作用的数据库。

admin: 从权限的角度来看,这是"root"数据库。要是将一个用户添加到这个数据库,这个用户自动继承所有数据库的权限。一些特定的服务器端命令也只能从这个数据库运行,比如列出所有的数据库或者关闭服务器。

local: 这个数据永远不会被复制,可以用来存储限于本地单台服务器的任意集合

config: 当Mongo用于分片设置时,config数据库在内部使用,用于保存分片的相关信息。

创建数据库:

use dbname

如果数据库不存在,则创建数据库,否则切换到指定数据库。

在 MongoDB 中,集合只有在内容插入后才会创建! 就是说,创建集合(数据表)后要再插入一个文档(记录),集合才会真正创建。

通过 db 来查看当前使用的数据库

删除数据库

db.dropDatabase()

操作集合

创建集合:

db.createCollection(“集合名”)

查看集合:

show collections / show tables

删除集合:

db.集合名.drop()

Mongodb在集合中插入数据

插入的数据被称为文档。

文档的数据结构和 JSON 基本一样。

所有存储在集合中的数据都是 BSON 格式。

BSON 是一种类似 JSON 的二进制形式的存储格式,是 Binary JSON 的简称。

db.集合名.insert(document)

db.col.insert({title: '一些数据', description: 'MongoDB 是一个 Nosql 数据库', tags: ['mongodb', 'database', 'NoSQL'] })

Mongodb在集合中更新数据

语法:

db.集合名.update({查询条件},{$set:{更新内容}},

{

upsert: <boolean>,

multi: <boolean>,

}

)

upsert: 默认为false ,如果查询不到数据,则把跟新输入插入

multi:默认为false,默认只改一条,true,更改多条

db.col.update({'name':'张三'},{$set:{'name':'张三丰'}})

db.col.update({'name':'张三'},{$set:{'name':'张三丰'}},{multi:true})

db.col.update({'name':'张三'},{$set:{'name':'张三丰'}},

{upsert:true,multi:true})

更新数据

如果我们想实现在某一列上在原有的值基础之上进行递增1效果可以用$inc运算符来实现

语法:

db.集合名.update({查询条件},{$inc:{字段名:NumberInt(1)}})

例如

db.col.update({‘_id':’1'},{$inc:{likenum:NumberInt(1)}})

Mongodb在集合中删除文档

删除文档:

db.集合名称.remove(

<query>,

{

justOne: <boolean>

}

)

删除所有数据:

db.col.remove({})

删除一条数据

db.col.remove({“name”:”张三”},{justOne:true})

删除多条数据

db.col.remove(“name”:”张三”})

Mongodb在集合中查询文档

MongoDB 查询文档使用 find() 方法。

find() 方法以非结构化的方式来显示所有文档。

db.collection.find(query)

pretty() 方法以格式化的方式来显示所有文档,linux下有用。

>db.col.find().pretty()

Mongodb的查询条件

Mongodb的and条件

MongoDB 的 find() 方法可以传入多个键(key),每个键(key)以逗号隔开,即常规 SQL 的 AND 条件。

db.col.find({key1:value1, key2:value2})

以上实例中类似于 WHERE 语句:WHERE key1=‘value1’ AND key2=‘value2'

Mongodb的or条件

MongoDB OR 条件语句使用了关键字 $or

db.col.find(

{

$or: [

{key1: value1}, {key2:value2}

]

}

)

MongoDB的 And 与 Or 一起使用

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;

模糊查询

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

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

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

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

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

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

MongoDB的Limit 和 Skip操作

如果你需要在MongoDB中读取指定数量的数据记录,可以使用MongoDB的Limit方法,limit()方法接受一个数字参数,该参数指定从MongoDB中读取的记录条数。

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

我们除了可以使用limit()方法来读取指定数量的数据外,还可以使用skip()方

法来跳过指定数量的数据,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()

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

db.collection.createIndex(keys,option)

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

3. 删除索引

db.collection.dropIndex(index)

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值