首页
学习
活动
专区
工具
TVP
发布

MongoDB的简单介绍(二)

标题:

简单使用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

一个有态度的知识分享号,长按识别左侧二维码,关注我们吧!

  • 发表于:
  • 原文链接http://kuaibao.qq.com/s/20180305G1FYDC00?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券