Ubuntu20.04 安装 MongDB

# 安装
sudo apt install mongodb

# 查看状态
# status start stop enable disable
systemctl status mongodb

# 如果是apt方式安装 配置文件位置
vim /etc/mongodb.conf

MongDB 图像管理软件 Robo 3T

下载地址 https://robomongo.org/download

studiio 3T 收费版本 功能强大

robo 3T 免费版本 够用了

下载后, 进入软件目录 bin/robo3t 就可以启动了

Robo 3T连接MongoDB

首先确保mongodb已经启动,然后启动robo 3t

File -> Connect - create 创建连接, 然后点击save保存连接

双击连接,即可连接mongodb

Robo连接mongodb数据库 robo怎么连接mongodb_字段

创建数据

创建数据库

右击链接,选择 create database来创建数据库,我们创建一个 study

创建集合

双击数据库 study, 右击Collections,create collections, 我们创建一个 students

然后我们插入一条数据

双击 Collections(1), 再双击 students

(1) 表示有1个集合,students就是我们刚刚创建的集合,双击完成后,如下如图

Robo连接mongodb数据库 robo怎么连接mongodb_Robo连接mongodb数据库_02

我们插入一条数据,把命令更改

db.getCollection('students').insertOne({"name":"张小二","age":"18","address":"北京"})

Robo连接mongodb数据库 robo怎么连接mongodb_Robo连接mongodb数据库_03

对比关系型数据库,非关系型数据库对数据结构没有那么强的一致性,但是我们尽量保证数据结构类型的一致性。

也就是说,我们可以执行如下命令,也可以成功执行

db.getCollection('students').insertOne({"hello":"world","sex":"男","address":"四川"})

且你可以插入两条一样的数据,因为系统会自动给你加上_id 自动,这个不同,导致数据不同,所以会出现两个看似一样的数据

Robo连接mongodb数据库 robo怎么连接mongodb_mongodb_04

批量插入数据

db.getCollection('students').insertMany([
    {"name":"张三","age":"33","address":"上海"},
    {"name":"李四","age":"24","address":"北京"},
    {"name":"王二麻子","age":"19","address":"保密"}
])

Robo连接mongodb数据库 robo怎么连接mongodb_Robo连接mongodb数据库_05

查询

查询所有
db.getCollection('students').find({})
查询指定数据
db.getCollection('students').find({"name":"张小二","age":"18"})
范围查询

查询年龄大于等于23, 因为我插入的时候是字符串,所以这里也只能输入字符串23,介意的可以自行修改,我就懒得改了

db.getCollection('students').find({"age":{"$gte":"23"}})
db.getCollection('students').find({"age":{"$gte":"23"}})

$gt  大于
$gte 大于等于
$it  小于
$ite 小于等于
$ne  不等于

# 范围查询
db.getCollection('集合').find({"字段1":{操作符1:边界1,操作符2:边界2}})

# 范围查询,多个字段 关系是and 且
db.getCollection('集合').find({
"字段1":{操作符1:边界1,操作符2:边界2},
"字段2":{操作符1:边界1,操作符2:边界2}
}
)
限定返回的内容
# 1表示返回,0表示隐藏,默认1
db.getCollection('students').find({查询条件},{返回字段:1,返回字段:0})
修饰返回结果
# count() 返回条数
db.getCollection('students').find({}).count()

# limit() 限制返回条数
db.getCollection('students').find({}).limit(4)

# sort() -1倒序,1正序
db.getCollection('students').find({}).sort({字段1:-1})

修改数据

  • updateOne 修改满足条件的第一条数据
  • updateMany 修改所有符合条件的数据
db.getCollection('students').updateMany({"查询语句的第一个字典"},{‘$set’:{"字段1":"修改值","字段2":"修改值",}})

删除数据

删除delete 和 查询find的语法结构是一样的,就是把关键字换成delete,查询到什么,对应的就会删除什么。

一般的都是假删除,都是增加一个布尔值字段,表示数据是否删除,不会真正删除。

  • deleteOne 删除满足条件的第一条数据
  • deleteMany 删除所有符合条件的数据

去重

对于age,进行 age大于24的去重

db.getCollection('students').distinct(
	'age',
    {'age':{'$gte':"24"}}
)