Python学习 Day51 MongoD的CRUD操作 02

本文详细介绍了MongoDB的基本CRUD操作,包括插入数据(insert和save)、更新数据(update)、删除数据(remove)以及查询操作。通过实例展示了如何在命令行和GUI环境中执行这些操作,并提供了各种查询条件,如等值、不等值、范围查询和正则表达式查询。此外,还涵盖了数据的排序、分页和去重方法,是MongoDB初学者的实用教程。
摘要由CSDN通过智能技术生成

MongoDB的CRUD操作

命令描述
db.集合名.insert(docunment)数据的添加
db.集合名.save(document)如果数据存在就更新,不存在就添加
db.集合名.update(query,update,multi)query:查询条件,类似SQL语句update中的where部分 update:更新操作符,类似SQL语句update中的set部分 multi:可选,默认是false,表示只更新找到的第一条记录,值为true表示把满足条件的文档全部更新
db.集合名.remove(query)删除数据,query为删除条件

一 、insert插入数据

创建数据库
在这里插入图片描述
命令行窗口插入数据
在这里插入图片描述
GUI窗口插入数据
在这里插入图片描述

批量插入数据

方式一
db.student.insert([{'name':'李四','gender':'女'},{'name':'王五','age':20},{'name':'承留','gender':'女'}])

在这里插入图片描述

方式二
for(i=20;i<=25;i++){db.student.insert({'name':'绮梦','age':i})}

在这里插入图片描述


二、 save插入数据

db.student.insert({'_id':1,'name':'marry'})

在这里插入图片描述

db.student.insert({'_id':1,'name':'lili'})

在这里插入图片描述

db.student.save({'_id':1,'name':'lili'})

在这里插入图片描述

insert与save的区别
  • 若集合中已有当前ID,则insert插入会报错,而save会执行更新操作
  • 如果集合中的没有当前ID,则save执行的是插入操作

三、 update更新数据

更新数据时,在待更新的字段后需要将原数据其他内容补齐,否则会丢失

db.student.update({'name':'marry'},{'age':25,'name':'marry','gender':'男'})

在这里插入图片描述
使用$set可以保留原数据,不用再次手动补充

db.student.update({'name':'李四'},{$set:{'age':20}})

在这里插入图片描述
第三个参数multi默认为false,只更新符合条件的第一条数据,若为true,将对符合条件的所有数据进行更新

db.student.update({'name':'李四'},{$set:{'age':25}},{'multi':true})

在这里插入图片描述


四、remove删除数据

将姓名为lili的学生数据全部删除

db.student.remove({'name':'lili'})

在这里插入图片描述
将符合条件的一条数据删除{‘justOne’:true}

db.student.remove({'name':'王五'},{'justOne':true})

在这里插入图片描述
清空集合:db.student.remove({})

db.student.remove({})

在这里插入图片描述


五、查询操作

MongoDB中的查询命令

命令描述
db.集合名.find({条件文档})查找所有的匹配数据
db.集合名.findOne({条件文档})只返回匹配的第一个数据
db.集合名.find().limit(number)用于读取指定数量的文档
db.集合名.find().skip(number)用于跳过指定数量的文档
db.集合名.find().sort()1为升序,-1为降序
db.集合名.find({条件}).count()用于统计结果集中文档条数
db.集合名.distinct(field)去重

MongoDB的比较符号

符号含义示例
$eq等于{‘age’:20}
$lt小于{‘age’:{’$lt’:20}}
$gt大于{‘age’:{’$gt’:20}}
$lte{‘age’:{’$lte’:20}}
$gte{‘age’:{’$gte’:20}}
$ne不等于{‘age’:{’$ne’:20}}
$in在范围内{‘age’:{’$in’:[20,23]}}
$nin不在范围内{‘age’:{’$nin’:[20,23]}}
$or{$or:[{},{}]}

(1)查询所有数据

db.student.find()

在这里插入图片描述
(2)查询匹配数据

db.student.find({'name':'张三'})

在这里插入图片描述
(3)返回匹配的第一条数据

db.student.findOne({'name':'绮梦'})

在这里插入图片描述
(4)等值查询:查询年龄为20的数据

db.student.find({'age':20})
或
db.student.find({'age':{'$eq':20}})

在这里插入图片描述
(5)非等值查询
查询年龄小于22的数据

db.student.find({'age':{'$lt':22}})

在这里插入图片描述
查询年龄小于(大于)等于22的数据

db.student.find({'age':{'$lte':22}})
或
db.student.find({'age':{'$gte':22}})

在这里插入图片描述
在这里插入图片描述
查询年龄在(不在)【20,23】范围内的数据

db.student.find({'age':{'$in':[20,23]}})
或
db.student.find({'age':{'$nin':[20,23]}})

在这里插入图片描述
在这里插入图片描述
查询年龄是20或名字是绮梦的数据

db.student.find({'$or':[{'age':20},{'name':'绮梦'}]})

在这里插入图片描述
(6)模糊查询
查询姓名中有“绮”字的数据

db.student.find({'name'://})
//或正则写法
db.student.find({'name':{$regex:'绮'}})

在这里插入图片描述
查询年龄大于20的数据

//JS写法
db.student.find({$where:function(){return this.age>20}})

在这里插入图片描述
(7)读取指定数量文档:查询前三条数据

db.student.find().limit(3)

在这里插入图片描述
(8)跳过指定数量文档:跳过3条再查3条(查询第四五六条数据)

db.student.find().limit(3).skip(3)

在这里插入图片描述
(9)排序:按年龄升序(降序)排列

//升序
db.student.find().sort({age:1})
//降序
db.student.find().sort({age:-1})

在这里插入图片描述
(10)统计数据条数
查询所有数据条数

db.student.find().count()

在这里插入图片描述
查询姓名是“绮梦”的数据个数

db.student.find({'name':'绮梦'}).count()

在这里插入图片描述
(11)去重
查询所有同学的年龄值

db.student.distinct('age')

在这里插入图片描述
(12)判断数据是否存在
查询有年龄列的数据

查询有(没有)年龄列的数据
// 有年龄  db.student.find({'age':{$exists:true}})
// 无年龄  db.student.find({'age':{$exists:false}})

在这里插入图片描述

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值