标题:
简单使用MongoDB操作数据
修改数据
数据更新
局部更新
更新不存在的数据
更新多条数据
数据删除
安装pymongo与连接MongoDB
在Pyhton中操作MongoDB
插入数据
更新数据
删除数据
删除集合
删除文档
查找数据
find与cursor
查询特定键
排序
切片
正则查询
继续来接着我们上次关于NoSql类数据库——MongoDB的介绍,这次我们主要来简单的讨论一下在MongoDB中如何更新数据(修改数据),删除数据,以及如何通过Python调用MongoDB。
| 1.简单使用MongoDB操作数据
| a.更新数据
| i.数据更新
更新集合中的数据使用命令,它接收两个参数,前者为条件,后者为进行更新的操作:
如上例,将文档中有的改成。
| ii.局部更新
有些时候,我们需要对文档进行局部更新,MongoDB中,默认一般情况的修改会对整个文档造成影响
例如上面的例子,我们只想对进行修改使得变为,但如果直接使用会使得整个文档被修改的只剩下。
这个时候,就需要使用来对文档进行局部更新
| iii.更新不存在的数据
有时候,我们需要直接更新一条数据库中并不存在的数据,这个时候,仅仅用原来的的使用方法是达不到效果的,我们需要在括号里面加上第三个参数(Bool)来实现我们想要的效果
| iv.更新多条数据
在使用的时候,默认只更新被查找到的第一条数据,这是为了防止用户进行误操作。
发现只有第一个文档被更新了。
要同时更新多条数据,就需要使用的第四个也是最后一个参数(Bool)。
这里的更新方式通常都是使用局部更新的方式,也是为了防止误操作。
| b.数据删除
要删除集合中的数据,我们使用方法,它接收一个参数,作为查找删除数据的条件,该参数不能为空。如果想清除集合里面的所有数据,可以直接时候用废除集合。
但也有时候我们只想删除被找到的第一条数据,这个时候可以利用的第二个参数
| 2.安装pymongo与连接MongoDB
接下来我们介绍如何在Python中使用MongoDB。
要通过Pyhton使用MongoDB,我们首先需要下载Python用于操作MongoDB的库pymongo
然后就可以在python中导入这个库了,不过通常我们只是导入它的驱动:
导入之后,我们在Python中通过下面一段代码获取MongoDB的操作对象:
获得集合操作对象之后,我们就可以通过这个集合操作对象对数据库的集合进行操作,以上例为例,就是对名为MongoDB的数据库“test”中名为“useraction”的集合进行操作。
| 3.在Python中操作MongoDB
| a.插入数据
往集合插入数据的方法有两种,分别是和,对应的就是MongoDB Shell里面的和。
它们之间的区别就是,在插入和原来信息重复的数据对象的时候,会报错,而则会将原来的数据对象进行更新。当然,这里的重复指的是唯一索引的重复,类似于“_id”的重复。
用shell查看,发现插入成功
在python中的方法语法为
可以发现,python中对MongoDB插入数据的方式与MongoDB Shell没有太多区别。
| b.更新数据
更新数据使用方法,语法格式如下:
criteria: 需要被更新的条件表达式
objNew: 更新表达式
upsert: 如目标记录不存在,是否插入新文档。
multi: 是否更新多个文档。
示例:
发现操作符的使用方式也与shell没有太多区别。
| c.删除数据
| i.删除集合
要删除一个集合,有多种方法,方法一是用:
这个地方的指的是这个集合在MongoDB数据库里面的名字,例如我们上面的例子,它的名字就是“useraction”,而不是“collection_useraction”。
另外一个方法是用:
指的就是python中该集合的操作对象,如上例,就是“collection_useraction”,而不是集合名字“useraction”
| ii.删除文档
删除文档使用方法,同样有两种方式调用,与上文中删除集合类似,所以这里只讲一种方法:
第一个参数表示要删除的文档的搜索条件或者该文档的id,默认为None。
multi表示是否删除多个,为False的时候一次只删除一个。
当括号为空的时候会删除集合内所有文档,这一点与shell不同。
表示删除所有集合中“x”值为1的文档。
| d.查找数据
| i.find与cursor
我们先假设我们在集合中插入了100条信息
在Python中查找用的方法同样也是,使用方式也与shell相同,当我们需要查找并遍历查找结果的时候,可以用这样的方式:
这是因为语句返回了一个可供迭代的对象,用方法可以看到这个对象的类型:
这个对象同时还支持我们直接用索引访问:
并且还支持一些shell的方法:
并且可以对它进行深拷贝:
若是想一次只查找一条信息,可以使用方法。
| ii.查询特定键
当我们只想查询指定的关键字的值的时候,就需要用到的第二个参数“projection”:
| iii.排序
排序用的同样是方法,但是使用方式与shell略有不同:
“KEY”指作为排序基准的关键字的名字,则表示排序的方法,有两个选项,分别是(升序,可用1代替)和(降序,可用-1代替)对象,示例:
也可以直接使用方法中的参数:
| iv.切片
在shell中我们使用与方法来对查询结果进行切片,python中一样可以:
skip与limit同样支持参数写法。
不仅如此,我们还可以对查询结果使用索引切片:
| v.正则查询
在查询文本的时候,除了MongoDB原有的文本查询格式,我们还可以使用正则表达式:
这次我们就先讲到这里,下次我们将会简单的介绍一点关于MongoDB的核心内容——MongoDB的索引的使用。
AI遇见机器学习
mltoai
一个有态度的知识分享号,长按识别左侧二维码,关注我们吧!
领取专属 10元无门槛券
私享最新 技术干货