目录
目标:
掌握 mongodb插入数据的方法
掌握 mongodb保存数据的方法
掌握 mongodb查询数据的方法
掌握 mongodb查询结果的处理方法
掌握 mongodb更新数据的方法
掌握 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
启动命令:
mongo
查看帮助命令
mongo –help
退出命令:
exit或者ctrl+c
语法:
MongoDB 创建数据库的语法格式如下:
use DATABASE_NAME
如果数据库不存在,则创建数据库,否则切换到指定数据库。
示例:
创建python数据库
db命令是查询当前所在数据库的位置
a、查询当前所在的数据库(示例如上)
db
b、查看所有数据库
show dbs /show databases
示例:
注意:当我们所创的数据库没有数据时,当我们查看所有数据库该数据库是不存在的,想要看到所创的数据库,就需要在里面添加数据。(如上,没有看到刚刚所创的python数据库)
语法:
MongoDB 删除数据库的语法格式如下:
db.dropDatabase()
该命令只能删除当前数据库,所有说想要删除数据库唯有切换到想要删除的数据库才能够删除
示例:
删除当前python数据库
无需手动创建集合: 向不存在的集合中第一次添加数据时,集合会自动被创建出来。
手动创建集合:
MongoDB 中使用 createCollection() 方法来创建集合。
语法格式:
db.createCollection(name, options)
参数说明:
options 可以是如下参数:
字段 | 类型 | 描述 |
---|---|---|
capped | 布尔 | (可选)如果为 true,则创建固定集合。固定集合是指有着固定大小的集合,当达到最大值时,它会自动覆盖最早的文档。 当该值为 true 时,必须指定 size 参数。 |
size | 数值 | (可选)为固定集合指定一个最大值,即字节数。 如果 capped 为 true,也需要指定该字段。 |
max | 数值 | (可选)指定固定集合中包含文档的最大数量。 |
示例:
在python数据库中创建spider固定集合,最大值为1000
查看集合语法:
show collections / show tables
示例:
查看当前数据库的集合
MongoDB 中使用 drop() 方法来删除集合。
语法格式:
db.集合名称.drop()
示例:
删除spider集合
MongoDB 使用 insert() 或 save() 方法向集合中插入文档,语法如下:
- db.集合名.insert(document)
- 或
- db.集合名.save(document)
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>
- }
- )
参数说明:
示例:
在python数据库中的students分别用以上命令插入数据
MongoDB 查询文档使用 find() 方法。
find() 方法以非结构化的方式来显示所有文档。
MongoDB 查询数据的语法格式如下:
db.集合名.find(query, projection)
示例:
查看students集合中的数据
db.集合名称.findOne(query, projection)
示例:
比较运算符
等于: 默认是等于判断, 没有运算符
小于:$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:'^黄'}})
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的效率要高于前者
在查询到的返回结果中, 只选择必要的字段
命令:
db.集合名称.find({},{字段名称:1,...})
参数为字段与值, 值为1表示显示, 值为0不显 特别注意:
对于_id列默认是显示的, 如果不显示需要明确设置为0
对于其他不显示的字段不能设置为0
db.stu.find({},{_id:0,name:1,gender:1})
方法sort(), 用于对查询结果按照指定的字段进行排序
命令:
db.集合名称.find().sort({字段:1,...})
参数1为升序排列 参数-1为降序排列
根据性别降序, 再根据年龄升序
db.stu.find().sort({gender:-1,age:1})
方法count()用于统计结果集中文档条数
命令:
db.集合名称.find({条件}).count() 命令:db.集合名称.count({条件})
- db.stu.find({gender:true}).count()
- db.stu.count({age:{$gt:20},gender:true})
mongodb数据更新的方法使用update()方法
update() 方法用于更新已存在的文档。语法格式如下:
- db.collection.update(
- <query>,
- <update>,
- {
- upsert: <boolean>,
- multi: <boolean>,
- writeConcern: <document>
- }
- )
参数说明:
MongoDB remove() 函数是用来移除集合中的数据。
remove() 方法的基本语法格式如下所示:
- db.collection.remove(
- <query>,
- <justOne>
- )
参数说明: