Mongdb之Robo3T

 

 🏆今日学习目标:

🍀MyBatis详解
创作者:林在闪闪发光
⏰预计时间:30分钟
🎉个人主页:林在闪闪发光的个人主页

 🍁林在闪闪发光的个人社区,欢迎你的加入: 林在闪闪发光的社区

 

目录

1.安装

2 介绍

数据库

3.在CMD中的使用(不推荐)

4.在Robo3T中的使用(推荐)

4.1基础知识

4.2基本操作

4.3数据库CRUD(增删改查)操作

5.练习


别紧张,深呼吸,坚持住,扛过去。

Take it easy, take a deep breath, hang in there, get through it.

 

1.安装

傻瓜式安装 不会安装的可以搜一下

2 介绍

数据库

1.数据库的服务器

  • 用来保存数据
  • 用mongod启动

2.数据库的客户端

  • 客户端用来操作服务器,对数据进行增删改查的操作
  • mongo启动客户端

所以要先启动服务器,才能进行操作

3.在CMD中的使用(不推荐)

开启一个mongdb的服务器

1.在C盘根目录,创建一个data文件夹,在该文件夹里创建一个db文件夹

  • 不想放C盘也可以,选择一个地址创建data和db文件夹,然后cmd输入:mongod --dbpath dir。如:mongod --dbpath D:\data\db

2.打开cmd,输入mongod,启动mongodb服务器

  • 在浏览器地址输入:localhost:27017,出现“It looks like you are trying to access MongoDB over HTTP on the native driver port.”表示服务器启动成功
  • 27017是默认监听端口,如果想换一个,可以在cmd输入:mongod --dbpath dir --port XXX。如:mongod --dbpath D:\data\db --port 10086
  • 端口号尽量选择4位以上,不要超过65535

3.不要关闭该cmd,再打开一个cmd,输入mongo,出现>表示已连接到数据库

4.退出:ctrl+c

也可以不必每次手动开启,设置随电脑启动自动后台开启,具体设置不再阐述。

4.在Robo3T中的使用(推荐)

4.1基础知识

1.文档(document)

  • 在mongodb中每一条数据就是就是一个文档

2.集合(collocation)

  • 集合就是一组文档,也就是说集合是用来存放文档的
  • 集合中储存的文档可以是各种各样的,没有格式要求

3.数据库(database)

多个文档可以组成集合,多个集合组成数据库

4.服务器(server)

一个服务器里面可以存放多个数据库

4.2基本操作

1.查看有多少数据库以及数据库大小

show dbs/show databases

2.进入指定数据库

use 数据库名

3.显示当前数据库

db(一旦进入数据库,db就是当前数据库)

4.显示当前数据库中所有集合

show collections

5.显示当前集合中所有文档

db.getCollection('collection').find() / db.collection.find()

4.3数据库CRUD(增删改查)操作

PS:下文所有collection均表示当前的集合名

1.插入文档

  • 向集合中插入一个或多个文档
(1)db.getCollection('collection').insert(doc) / db.collection.insert(doc)

(2)插入一个:例:db.getCollection('ST20').insert({name:"CHEN",age:20}) / db.ST20.insert({name:"CHEN",age:20})

(3)插入多个(传一个数组),例:db.getCollection('ST20').insert([{name:"CHEN",age:20},{name:"MA",age:20}]) / db.ST20.insert([{name:"CHEN",age:20},{name:"MA",age:20}])
  • 插入一个文档
(1)db.collection.insertOne()
  • 插入多个文档

(1)db.collection.insertMany(),表示只能传数组

PS:当我们向集合中插入文档时,数据库会给我们自动添加"_id"属性,该属性用来标识文档 的唯一性,当然,“_id”的值也可以自己设定,但是文档缺少了唯一性

2.查询文档

  • 查询所有文档

(1)db.getCollection('collection').find() / db.collection.find()

(2)如果不想看到匹配文档的所有属性,而只想看到某一属性,则就添加第二个参数,里面传入属性名

db.collection.find({} , {属性名 : 1})

PS:find()返回的是一个数组,要取元素,可以在后面加上索引,如db.collection.find()[0]

  • 查询特定属性(字段)值的文档
(1)db.collection.find({属性:"值"})

(2)例:db.ST20.find({name:"CHEN"})

(3)如果是多个属性条件,可以这么写:db.ST20.find({name:"CHEN",age:20})

查询符合条件的第一个文档
(1)db.collection.findOne({age:20})

PS:findOne返回的就是一个对象,不是数组

  • 查询所有结果数目

db.collection.find().count() / db.collection.find().length()

  • 查询内嵌文档(属性值是一个文档

(1)db.collection.find({"属性.属性":值})(PS:这里属性一定要加双引号

  • 更多操作符见练习

3.修改文档

  • 修改符合条件的单个文档

1)db.collection.updateOne({查询条件},{修改属性})

(2)例:把CHEN的年龄改成21

db.ST20.updateOne({name:"CHEN"},{age:21})

PS:update会被整个对象替换,如果只想修改指定属性值,保留其余属性值,那么需要修改操作符

修改操作符

$set:修改文档中指定属性

$unset:删除文档指定属性

db.collection.updateOne({查询条件},{$set:{修改条件}})

例:把CHEN的年龄改成21

db.ST20.updateOne({name:"CHEN"},{$set:{age:21}})

PS:如果没有age属性,则会自动添加age属性

修改多个符合条件的文档
(1)db.collection.updateMany({查询条件},{修改属性})

替换一个符合条件的文档
(1)db.collection.replaceOne()

向数组中添加新的值(数组:就是说原来的属性值是多个元素组成的数组,而不是只有单个元素,如字符串或者整数)
(1)$push(不考虑重复) / $addToSet(考虑重复)

(2)例子:db.collection.update({name:"CHEN"},{$push:{age:22}})

4.删除文档

删除单个或多个符合条件的文档
(1)db.collection.remove({属性值})

(2)第二个参数传入true就表示删除一个:db.collection.remove({属性值},true)

删除单个符合条件的文档
(1)db.collection.delectOne()

删除多个符合条件的文档
(1)db.collection.delectMany()

删除所有文档
(1)db.collection.remove({})(慢)

(2)删除所有文档相当于删除集合:db.collection.drop()(快)

删除数据库,然后跑路
(1)db.dropDatabase()

5.练习

(1)向集合numbers中插入20000条数据

for(var i = 1 ; i <= 20000 ; i ++){

db.numbers.insert({num:i});

} (慢,一条一条插入)



var arr = []

for(var i = 1 ; i <= 20000 ; i ++){

arr.push({num:i});

}

db.numbers.insert(arr); (快)

(2)查询numbers中num大于5000的文档(比较查询操作符

db.numbers.find({num:{$gt:500}})

(3)查询numbers中num大于等于5000的文档(比较查询操作符

db.numbers.find({num:{$gte:500}})

PS:$eq等于 $lt小于 $lte小于等于 $ne不等于

(4)查询num在400到500之内的

db.numbers.find({num:{$in:[400,500]}}) / db.numbers.find({num:{$gt:400 , $lt:500}})

(5)查询num在400到500之外的

db.numbers.find({num : {$nin : [400,500]}}) / db.numbers.find({num : {$lt:400 , $gt : 500}})

(6)查询numbers集合中前10条数据

db.numbers.find().limit(10)

(7)查询numbers集合中第11条到第20条数据数据

db.numbers.find().skip(10).limit(10)

skip()用来跳过指定数量的查询

(8)查询num在小于400或者大于500的

db.numbers.find({$or : [{num : {$lt : 400}} , {num : {$gt:500}}]})

(9)为num小于400的加上100

db.numbers.updateMany({num : {$lt : 400} , {$inc : {num : 400}}})

(10)对num进行排序

db.numbers.find().sort({num : 1})

PS:1表示升序,-1表示降序

(11)对num进行升序,nums进行降序

db.numbers.find().sort({num : 1 , nums : -1})

如果对你有帮助 那就点个赞吧

 

 

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

林在闪闪发光

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值