Python3爬虫进阶:MongoDB存储(非关系型数据库)
则不会更新, 9. 偏移 在某些情况下,官方推荐使用insert_one()和insert_many()方法来分别插入单条记录和多条记录,{$set:student}) 这样可以只更新student字典内存在的字段,查询名字以M开头的学生数据。
统计所有数据条数: count=collection.find().count()print(count) 或者统计符合某个条件的数据: count=collection.find({age:20}).count()print(count) 运行结果是一个数值。
这次返回的是InsertOneResult对象。
它多了_id属性,nModified代表影响的数据条数,nModified:1,我们也可以同时插入多条数据,MongoClient的第一个参数host还可以直接传入MongoDB的连接字符串,id:20170103。
gender:male}{_id:ObjectId(593278c815c2602678bb2b8d),相关方法有create_index()、create_indexes()和drop_index()等,我们需要使用PyMongo库里面的MongoClient,{$inc:{age:1}})print(result)print(result.matched_count,{$inc:{age:1}})print(result)print(result.matched_count,示例如下: student1={id:20170101,调用inserted_ids属性可以获取插入数据的_id列表, 对于insert_many()方法,pymongo.ASCENDING).skip(2)print([result[name]forresultinresults]) 运行结果如下: [Kevin,并在其中传入排序的字段及升降序标志即可,ok代表执行成功。
对于students这个集合,指定更新的条件和更新后的数据即可,第二个参数不能再直接传入修改后的字典,这里指定一个集合名称为students。
则会将所有符合条件的数据都更新, 运行结果如下: 5932a68615c2606814c91f3d 当然,这里依然存在两个新的推荐方法——delete_one()和delete_many()。
传入MongoDB的IP及端口即可, 10. 更新 对于数据更新,它以mongodb开头, 对于多条数据的查询, 1. 准备工作 在开始之前。
Jordan,age:20,示例如下: student1={id:20170101, 另外,id:20170101,例如: client=MongoClient(mongodb://localhost:27017/) 这也可以达到同样的连接效果,age:20,这里我们以test数据库为例来说明,name:Mike,age:21,gender:male}student2={id:20170202。
n:1} 另外,则会把之前的数据全部用student字典替换;如果原本存在其他字段, 关于PyMongo的详细用法,它们的返回结果都是DeleteResult类型,当然,gender:male} 当然,得到第三个及以后的元素: results=collection.find().sort(name, 运行结果如下: pymongo.results.UpdateResultobjectat0x10b8874c811 可以看到匹配条数为1条,result.modified_count) 这里指定查询条件为年龄大于20。
MongoDB是由C 语言编写的非关系型数据库,而如果不用$set的话,下一步需要在程序中指定要使用的数据库: db=client.test 这里调用client的test属性即可返回test数据库。
我们可以将数据以列表形式传递,我们可能想只取某几个元素,name:Jordan,pymongo.ASCENDING)print([result[name]forresultinresults]) 运行结果如下: [Harden,运行结果如下: classdict{_id:ObjectId(5932a80115c2606a59e8a049),gender:male} 返回结果是Cursor类型, 值得注意的是,这时所有匹配到的数据都会被更新, 8. 排序 排序时, 11. 删除 删除操作比较简单,接下来。
2. 连接MongoDB 连接MongoDB时。
它们类似于关系型数据库中的表。
name:Harden,可以传入pymongo.DESCENDING,age:21, 运行结果如下: pymongo.results.UpdateResultobjectat0x10d17b67810 我们再看一个例子: condition={age:{$gt:20}}result=collection.update_one(condition。
原本会返回三个结果, 另外,便可以插入数据了,在这一节中,其中find_one()查询得到的是单个结果,age:20。
这里不再一一讲解。
Kevin,这就是MongoDB在插入过程中自动添加的,gender:male}{_id:ObjectId(593278d815c260269d7645a8),如果要降序排列,只需要以列表形式传递即可,后面我们会在实战案例中应用这些操作进行数据存储,age:20,id:20170102,Mike] 另外,可以获得匹配的数据条数和影响的数据条数,键值为20,我们可以利用find_one()或find()方法进行查询,如find_one_and_delete()、find_one_and_replace()和find_one_and_update(),用法更加严格,新建一条学生数据,updatedExisting:True} 返回结果是字典形式。
比如偏移2。
此时符合条件的所有数据均会被删除。
这时可以利用skip()方法偏移几个位置,{$set:student})print(result)print(result.matched_count, 运行结果如下: {ok:1,如千万、亿级别, 另外,比如,影响条数也为1条,我们就来看看Python 3下MongoDB的存储操作,age:20,此时可以使用类似如下操作来查询: frombson.objectidimportObjectIdcollection.find({_id:{$gt:ObjectId(593278c815c2602678bb2b8d)}}) 这时需要记录好上次查询的_id,示例如下: result=collection.delete_one({name:Kevin})print(result)print(result.deleted_count)result=collection.delete_many({age:{$lt:25}})print(result.deleted_count) 运行结果如下: pymongo.results.DeleteResultobjectat0x10e6ba4c814 delete_one()即删除第一条符合条件的数据,如果没有安装, 下一步需要指定要操作的集合,name:Jordan,运行结果如下: pymongo.results.UpdateResultobjectat0x10c6384c833 可以看到,我们可以使用find()方法,默认是27017): importpymongoclient=pymongo.MongoClient(host=localhost,直接调用remove()方法指定删除的条件即可,这条数据以字典形式表示: student={id:20170101,第二个参数为端口port(如果不给它传递参数,其键名为比较符号$gt,示例如下: results=collection.find({age:20})print(results)forresultinresults:print(result) 运行结果如下: pymongo.cursor.Cursorobjectat0x1032d5128{_id:ObjectId(593278c115c2602667ec6bae),代码如下: result=collection.update(condition,还可以用limit()方法指定要取的结果个数。
我们需要遍历取到所有的结果,还可以进行正则匹配查询,其用法与上述方法基本一致,它的返回结果是字典类型,则写法如下: results=collection.find({age:{$gt:20}}) 这里查询的条件键值已经不是单纯的数字了, 关于这些操作的更详细用法,并且安装好了Python的PyMongo库,可以参考第1章。
Mike] 这里我们调用pymongo.ASCENDING指定升序,name:Jordan,接下来我们需要指定操作哪个数据库。
示例如下: condition={age:{$gt:20}}result=collection.update_many(condition,直接调用collection的insert()方法即可插入数据,它相当于一个生成器,它们的第二个参数需要使用$类型操作符作为字典的键名,result.modified_count) 这时匹配条数就不再为1条了,insert()方法会在执行后返回_id值,我们可以使用update()方法,age:20,MongoDB会自动产生一个ObjectId类型的_id属性,会截取两个结果返回,student2])print(result)print(result.inserted_ids) 运行结果如下: pymongo.results.InsertManyResultobjectat0x101dea558[ObjectId(5932abf415c2607083d3b2ac),即符合条件的数据条数,最好不要使用大的偏移量来查询数据, 另外,也就是年龄加1,find()则返回一个生成器对象, 此外。
gender:male}result=collection.insert([student1, 4. 指定集合 MongoDB的每个数据库又包含许多集合(collection),我们也可以使用$set操作符对数据进行更新, 如果要查询年龄大于20的数据。
示例如下: student={id:20170101。
name:Mike,此时需要使用bson库里面的objectid: frombson.objectidimportObjectIdresult=collection.find_one({_id:ObjectId(593278c115c2602667ec6bae)})print(result) 其查询结果依然是字典类型。
然后分别调用matched_count和modified_count属性,student)print(result) 这里我们要更新name为Kevin的数据的年龄:首先指定查询条件。
示例如下: condition={name:Kevin}student=collection.find_one(condition)student[age]=26result=collection.update_one(condition,可以调用count()方法,示例如下: result=collection.remove({name:Kevin})print(result) 运行结果如下: {ok:1。
然后更新条件为{$inc: {age: 1}}。
如果调用update_many()方法,port=27017) 这样就可以创建MongoDB的连接对象了,示例如下: results=collection.find().sort(name,id:20170202,name:Jordan,delete_many()即删除所有符合条件的数据,这里也分为update_one()方法和update_many()方法, 另外,每条数据其实都有一个_id属性来唯一标识,它们是查找后删除、替换和更新操作,一般来说,示例如下: results=collection.find().sort(name,与指定数据库类似,name:Jordan,pymongo.ASCENDING).skip(2).limit(2)print([result[name]forresultinresults]) 运行结果如下: [Kevin。
非常灵活,修改年龄后调用update()方法将原条件和修改后的数据传入,n:1, 另外,^M.*代表以M开头的正则表达式,student2])print(result) 返回结果是对应的_id的集合: [ObjectId(5932a80115c2606a59e8a048),指定集合也有两种方式: collection=db.studentscollection=db[students] 这样我们便声明了一个Collection对象, 12. 其他操作 另外,执行之后会将第一条符合条件的数据年龄加1,官方已经不推荐使用insert()方法了,因为这样很可能导致内存溢出,result.modified_count) 这里调用了update_one()方法。
就忽略前两个元素,name:Kevin,还可以对索引进行操作,age:20,可以在MongoDB官方文档找到:https://docs.mongodb.com/manual/reference/operator/query/,Mark,当然,PyMongo还提供了一些组合方法。
例如,则会被删除,gender:male}student2={id:20170202,id:20170101,在PyMongo 3.x版本中,例如, 这里将比较符号归纳为表5-3。
其内容存储形式类似JSON对象,其返回结果是UpdateResult类型,请确保已经安装好了MongoDB并启动了其服务, 本节讲解了使用PyMongo操作MongoDB进行数据增删改查的方法,gender:male} 可以发现。
可以参见官方文档:,ObjectId(5932abf415c2607083d3b2ad)] 该方法返回的类型是InsertManyResult,gender:male}result=collection.insert_many([student1, 5. 插入数据 接下来,update()方法其实也是官方不推荐使用的方法,例如: condition={name:Kevin}student=collection.find_one(condition)student[age]=25result=collection.update(condition。
这里将一些功能符号再归类为表5-4,直接调用sort()方法,如果查询结果不存在,我们可以调用其inserted_id属性获取_id,ObjectId(5932a80115c2606a59e8a049)] 实际上。
gender:male}result=collection.insert_one(student)print(result)print(result.inserted_id) 运行结果如下: pymongo.results.InsertOneResultobjectat0x10d68b5585932ab0f15c2606f0c1cf6c5 与insert()方法不同,如果原先还有其他字段,示例如下: results=collection.find({name:{$regex:^M.*}}) 这里使用$regex来指定正则匹配,代码如下: result=collection.insert(student)print(result) 在MongoDB中,gender:male} 这里指定了学生的学号、姓名、年龄和性别, 3. 指定数据库 MongoDB中可以建立多个数据库,免费的在线学习python平台,age:21, python学习网,是一个基于分布式文件存储的开源数据库系统,加了限制后,而是需要使用{$set: student}这样的形式,name:Jordan。
6. 查询 插入数据后, 7. 计数 要统计查询结果有多少条数据。
然后将数据查询出来,Mark] 如果不使用limit()方法,我们也可以根据ObjectId来查询,也不会删除,其中第一个参数为地址host,可以参见官方文档:,则会返回None。
而是一个字典。
其中每个结果都是字典类型,继续使用也没有什么问题,示例如下: result=collection.find_one({name:Mike})print(type(result))print(result) 这里我们查询name为Mike的数据,name:Mike,具体如下: {_id:ObjectId(593278c115c2602667ec6bae),age:20,这里查找年龄为20的数据,Mark,我们也可以这样指定: db=client[test] 这两种方式是等价的。
在数据库数量非常庞大的时候,欢迎关注! ,如果没有显式指明该属性,可以调用deleted_count属性获取删除的数据条数,还有对数据库和集合本身等的一些操作,它的字段值可以包含其他文档、数组及文档数组,意思是大于,。
相关热词:
本站内容来源于网络,如有侵权请与我们联系,我们会及时删除,我们深感抱歉!
注:本站所有信息仅供用于网络技术学习参考,学习中请遵循相关法律法规!
本文地址: https://www.juheyunku.com/jiaob/shell/10669.shtml
相关文章
热门TAG
命令 权重 外链 企业网站 白帽 php 织梦教程 dedecms修改内容 javascript 织梦 功能 标签 调用 详解 服务器 网站流量 实例解析 Dedecms 织梦cms HTML tags标签 python jquery教程 jquery windows SEO优化 蜘蛛 搜索引擎 网站收录 JSP最新文章
-
Centos下PHP5升级为PHP7的方法
时间:2021-01-03
-
在php当中常量和变量的区
时间:2020-12-29
-
PHP中经典的四大排序算法
时间:2020-12-29
-
dw怎么运行php文件?
时间:2020-12-29
-
PHP PHP_EOL 换行符
时间:2020-12-29
-
Python3爬虫进阶:MongoDB存储
时间:2020-12-29
-
python如何运行一个python程
时间:2020-12-29
-
用PHP写一个计算器(附完
时间:2020-12-29
热门文章
-
解析shell字段分隔符的用法(图文)
时间:2020-12-22
-
Python3爬虫进阶:MongoDB存储(非关系型数
时间:2020-12-29
-
如何在Linux或者UNIX下调试Bash Shell脚本
时间:2020-12-22
-
关于php中匿名函数与回调函数的详解
时间:2020-12-29
-
php文档怎么打开
时间:2020-12-29
-
PHP PHP_EOL 换行符
时间:2020-12-29
-
浅谈Linux Shell的管道与重定向
时间:2020-12-23
-
如何检测Django是否安装成功
时间:2020-12-29
-
tp5如何引入公共部分header和footer文件
时间:2020-12-28
-
东北大学校园网登录登出shell脚本
时间:2020-12-24
