目录
目标:
-
掌握 mongodb插入数据的方法
-
掌握 mongodb保存数据的方法
-
掌握 mongodb查询数据的方法
-
掌握 mongodb查询结果的处理方法
-
掌握 mongodb更新数据的方法
-
掌握 mongodb删除数据的方法
一、启动Mongodb
1.启动 MongoDB服务命令
Linux版本不一样的启动命令也有所不同。使用以下命令查看使用命令
ps --no-headers -o comm 1
-
systemd- 选择下面的systemd (systemctl)。 -
init- 选择下面的System V Init(服务)。
systemd的使用的命令如下:
启动mongodb
sudo systemctl start mongod
查看是否启动成功:
sudo systemctl status mongod
重启mongodb:
sudo systemctl restart mongod
关闭 mongodb:
sudo systemctl stop mongod
init的使用命令是:
启动mongodb
sudo service mongod start
查看是否启动成功:
sudo service mongod status
重启mongodb:
sudo service mongod restart
关闭 mongodb:
sudo service mongod stop
2.启动mongodb客户端
启动命令:
mongo
查看帮助命令
mongo –help
退出命令:
exit或者ctrl+c
二、创建、查询、删除数据库
1.创建数据库
语法:
MongoDB 创建数据库的语法格式如下:
use DATABASE_NAME
如果数据库不存在,则创建数据库,否则切换到指定数据库。
示例:
创建python数据库

db命令是查询当前所在数据库的位置
2.数据库查询
a、查询当前所在的数据库(示例如上)
db
b、查看所有数据库
show dbs /show databases
示例:

注意:当我们所创的数据库没有数据时,当我们查看所有数据库该数据库是不存在的,想要看到所创的数据库,就需要在里面添加数据。(如上,没有看到刚刚所创的python数据库)
3.删除数据库
语法:
MongoDB 删除数据库的语法格式如下:
db.dropDatabase()
该命令只能删除当前数据库,所有说想要删除数据库唯有切换到想要删除的数据库才能够删除
示例:
删除当前python数据库

三、创建、查询、删除集合
1.创建集合
无需手动创建集合: 向不存在的集合中第一次添加数据时,集合会自动被创建出来。
手动创建集合:
MongoDB 中使用 createCollection() 方法来创建集合。
语法格式:
db.createCollection(name, options)
参数说明:
- name: 要创建的集合名称
- options: 可选参数, 指定有关内存大小及索引的选项
options 可以是如下参数:
| 字段 | 类型 | 描述 |
|---|---|---|
| capped | 布尔 | (可选)如果为 true,则创建固定集合。固定集合是指有着固定大小的集合,当达到最大值时,它会自动覆盖最早的文档。 当该值为 true 时,必须指定 size 参数。 |
| size | 数值 | (可选)为固定集合指定一个最大值,即字节数。 如果 capped 为 true,也需要指定该字段。 |
| max | 数值 | (可选)指定固定集合中包含文档的最大数量。 |
示例:
在python数据库中创建spider固定集合,最大值为1000

2.查询集合
查看集合语法:
show collections / show tables
示例:
查看当前数据库的集合

3.删除集合
MongoDB 中使用 drop() 方法来删除集合。
语法格式:
db.集合名称.drop()
示例:
删除spider集合

四、Mongodb的增删改查
1.mongodb的数据插入
MongoDB 使用 insert() 或 save() 方法向集合中插入文档,语法如下:
db.集合名.insert(document)
或
db.集合名.save(document)
- save():如果 _id 主键存在则更新数据,如果不存在就插入数据。该方法新版本中已废弃,可以使用 db.collection.insertOne() 或 db.collection.replaceOne() 来代替。
- insert(): 若插入的数据主键已经存在,则会抛 org.springframework.dao.DuplicateKeyException 异常,提示主键重复,不保存当前数据。
3.2 版本之后新增了 db.collection.insertOne() 和 db.collection.insertMany()。
db.collection.insertOne() 用于向集合插入一个新文档,语法格式如下:
db.collection.insertOne(
<document>,
{
writeConcern: <document>
}
)
db.collection.insertMany() 用于向集合插入一个多个文档,语法格式如下:
db.collection.insertMany(
[ <document 1> , <document 2>, ... ],
{
writeConcern: <document>,
ordered: <boolean>
}
)
参数说明:
- document:要写入的文档。
- writeConcern:写入策略,默认为 1,即要求确认写操作,0 是不要求。
- ordered:指定是否按顺序写入,默认 true,按顺序写入。
示例:
在python数据库中的students分别用以上命令插入数据

2.mongodb的数据查询
MongoDB 查询文档使用 find() 方法。
2.1查看所有文档
find() 方法以非结构化的方式来显示所有文档。
MongoDB 查询数据的语法格式如下:
db.集合名.find(query, projection)
- query :可选,使用查询操作符指定查询条件
- projection :可选,使用投影操作符指定返回的键。查询时返回文档中所有键值, 只需省略该参数即可(默认省略)。
示例:
查看students集合中的数据

2.2查看第一个文档
db.集合名称.findOne(query, projection)
示例:
2.3查询条件
比较运算符
-
等于: 默认是等于判断, 没有运算符
-
小于:
$lt (less than) -
小于等于:
$lte (less than equal) -
大于:
$gt (greater than) -
大于等于:
$gte -
不等于:
$ne
查询年龄大于18的所有学生
db.stu.find({age:{$gte:18}})
逻辑运算符
逻辑运算符主要指与、或逻辑
-
and:在json中写多个条件即可
查询年龄大于或等于18, 并且性别为true的学生
db.stu.find({age:{$gte:18},gender:true})
-
or:使用$or, 值为数组, 数组中每个元素为json
查询年龄大于18, 或性别为false的学生
db.stu.find({$or:[{age:{$gt:18}},{gender:false}]})
查询年龄大于18或性别为男生, 并且姓名是郭靖
db.stu.find({$or:[{age:{$gte:18}},{gender:true}],name:'gj'})
范围运算符
使用$in, $nin 判断数据是否在某个数组内
查询年龄为18、 28的学生
db.stu.find({age:{$in:[18,28,38]}})
支持正则表达式
使用$regex编写正则表达式
查询name以'黄'开头的数据
db.stu.find({name:{$regex:'^黄'}})
2.4自定义查询
mongo shell 是一个js的执行环境 使用$where 写一个函数, 返回满足条件的数据
查询年龄大于30的学生
db.stu.find({
$where:function() {
return this.age>30;}
})
skip和limit
-
方法limit(): 用于读取指定数量的文档
db.集合名称.find().limit(NUMBER)
查询2条学生信息
db.stu.find().limit(2)
-
方法skip(): 用于跳过指定数量的⽂档
db.集合名称.find().skip(NUMBER)
db.stu.find().skip(2)
-
同时使用
db.stu.find().limit(4).skip(5)
db.stu.find().skip(5).limit(4)
注意:先使用skip在使用limit的效率要高于前者
2.5投影
在查询到的返回结果中, 只选择必要的字段
命令:
db.集合名称.find({},{字段名称:1,...})
参数为字段与值, 值为1表示显示, 值为0不显 特别注意:
-
对于_id列默认是显示的, 如果不显示需要明确设置为0
-
对于其他不显示的字段不能设置为0
db.stu.find({},{_id:0,name:1,gender:1})
2.6排序
方法sort(), 用于对查询结果按照指定的字段进行排序
命令:
db.集合名称.find().sort({字段:1,...})
参数1为升序排列 参数-1为降序排列
根据性别降序, 再根据年龄升序
db.stu.find().sort({gender:-1,age:1})
2.7统计个数
方法count()用于统计结果集中文档条数
命令:
db.集合名称.find({条件}).count() 命令:db.集合名称.count({条件})
db.stu.find({gender:true}).count()
db.stu.count({age:{$gt:20},gender:true})
3.mongodb的数据更新
mongodb数据更新的方法使用update()方法
update() 方法用于更新已存在的文档。语法格式如下:
db.collection.update(
<query>,
<update>,
{
upsert: <boolean>,
multi: <boolean>,
writeConcern: <document>
}
)
参数说明:
- query : update的查询条件,类似sql update查询内where后面的。
- update : update的对象和一些更新的操作符(如$,$inc...)等,也可以理解为sql update查询内set后面的
- upsert : 可选,这个参数的意思是,如果不存在update的记录,是否插入objNew,true为插入,默认是false,不插入。
- multi : 可选,mongodb 默认是false,只更新找到的第一条记录,如果这个参数为true,就把按条件查出来多条记录全部更新。
- writeConcern :可选,抛出异常的级别。
4.mongodb的数据删除
MongoDB remove() 函数是用来移除集合中的数据。
remove() 方法的基本语法格式如下所示:
db.collection.remove(
<query>,
<justOne>
)
参数说明:
- query :(可选)删除的文档的条件。
- justOne : (可选)如果设为 true 或 1,则只删除一个文档,如果不设置该参数,或使用默认值 false,则删除所有匹配条件的文档。
- writeConcern :(可选)抛出异常的级别。
本文详细介绍了MongoDB的启动过程,包括Linux环境下systemd和SystemVInit两种方式,以及如何创建、查询和删除数据库与集合。深入讲解了数据的增删改查操作,包括插入、查询、更新和删除,涵盖了多种查询条件和方法。此外,还涉及到了数据的排序、投影和计数等高级查询技巧。通过本文,读者将全面掌握MongoDB的基本操作。
3605

被折叠的 条评论
为什么被折叠?



