时间:2021-05-22
MongoDB 是目前最流行的 NoSQL 数据库之一,使用的数据类型 BSON(类似 JSON)。
Mongodb的安装和配置
Mongodb的安装教程请网上搜索, 安装完成后, 进行以下配置过程:
*注: 本人使用的不是root用户, 所以修改目录的拥有者. *
第一条命令为指定端口和保存路径, 第二条为运行mongodb数据库.
mongod --port 27017 --dbpath /data/dbmongo --port 27017sudo pip3 install pymongo
mongodb存储数据以键值形式, 因此在Python中使用字段插入数据.
import pymongo#连接mongodbclient = pymongo.MongoClient('mongodb://localhost:27017/')#指定数据库db = client.test4#指定集合collection = db.students#数据student1 = { 'id': '201801', 'name': 'Jack', 'age': 20, 'gender': 'male'}student2 = { 'id': '201802', 'name': 'Tom', 'age': 22, 'gender': 'male'}student3 = { 'id': '201803', 'name': 'Rose', 'age': 21, 'gender': 'female'}student4 = { 'id': '201804', 'name': 'Mike', 'age': 20, 'gender': 'female'}student5 = { 'id': '201805', 'name': 'Ray', 'age': 20, 'gender': 'female'}student6 = { 'id': '201806', 'name': 'Alan', 'age': 21, 'gender': 'male'}#插入一条数据result1 = collection.insert_one(student1)print(result1)print(result1.inserted_id)# #插入多条数据result2 = collection.insert_many([student2, student3, student4, student5, student6])print(result2)print(result2.inserted_ids)运行结果:
insert方法:
5b3a1942971951218d41c02b
[ObjectId('5b3a1942971951218d41c02c'), ObjectId('5b3a1942971951218d41c02d')]
官方推荐:
<pymongo.results.InsertOneResult object at 0x7fa4cc363ec8>5b3a1942971951218d41c02e<pymongo.results.InsertManyResult object at 0x7fa4cc363f08>[ObjectId('5b3a1942971951218d41c02f'), ObjectId('5b3a1942971951218d41c030')]运行结果:
单条数据 =================================================={'_id': ObjectId('5b3a1942971951218d41c02b'), 'id': '201801', 'name': 'Jack', 'age': 20, 'gender': 'male'}多条数据 =================================================={'_id': ObjectId('5b3a1942971951218d41c02b'), 'id': '201801', 'name': 'Jack', 'age': 20, 'gender': 'male'}{'_id': ObjectId('5b3a1942971951218d41c02e'), 'id': '201804', 'name': 'Mike', 'age': 20, 'gender': 'female'}{'_id': ObjectId('5b3a1942971951218d41c02f'), 'id': '201805', 'name': 'Ray', 'age': 20, 'gender': 'female'}计数 ==================================================3排序 ==================================================['Alan', 'Jack', 'Mike', 'Ray', 'Rose', 'Tom']偏移 ==================================================['Mike', 'Ray', 'Rose', 'Tom']['Mike', 'Ray']运行结果:
更新前: {'_id': ObjectId('5b3a1942971951218d41c02b'), 'id': '201801', 'name': 'Jack', 'age': 20, 'gender': 'male'}更新后 {'_id': ObjectId('5b3a1942971951218d41c02b'), 'id': '201801', 'name': 'Jack', 'age': 22, 'gender': 'male'}{'ok': 1, 'nModified': 1, 'n': 1, 'updatedExisting': True}运行结果:
更新前: {'_id': ObjectId('5b3a1942971951218d41c02b'), 'id': '201801', 'name': 'Jack', 'age': 22, 'gender': 'male'}更新后 {'_id': ObjectId('5b3a1942971951218d41c02b'), 'id': '201801', 'name': 'Jack', 'age': 23, 'gender': 'male'}{'ok': 1, 'nModified': 1, 'n': 1, 'updatedExisting': True}比较使用和不适用$set更新数据, 发现此时并没有什么区别.
下面介绍区别所在:
运行结果:
使用:
更新前: {'_id': ObjectId('5b3a1942971951218d41c02b'), 'id': '201801', 'name': 'Jack', 'age': 23, 'gender': 'male'}更新后 {'_id': ObjectId('5b3a1942971951218d41c02b'), 'id': '201803', 'name': 'Jack', 'age': 20, 'gender': 'female', 'mother': "Jack's mother"}{'ok': 1, 'nModified': 1, 'n': 1, 'updatedExisting': True}==================== 分割线 ====================
不使用: 更新前: {'_id': ObjectId('5b3a1942971951218d41c02b'), 'id': '201803', 'name': 'Jack', 'age': 20, 'gender': 'female', 'mother': "Jack's mother"}更新后 {'_id': ObjectId('5b3a1942971951218d41c02b'), 'id': '201803', 'name': 'Jack', 'age': 20, 'gender': 'female', 'father': "Jack's father"}{'ok': 1, 'nModified': 1, 'n': 1, 'updatedExisting': True}分析上面运行结果, 可以发现使用$set时, 若更新数据有原数据没有的字段, 则将该字段加到原数据上(上例为新增了mother字段), 而不会删除任何字段. 相反, 若不使用set时, 将从原数据中删除更新数据没有的字段, 再加上新增字段(上例为删除了mother字段, 新增了father字段. 也可以理解为将原数据完全替换为更新数据)
运行结果:
update_one: <pymongo.results.UpdateResult object at 0x7f6cace0f9c8>1 1==================== 分割线 ====================update_many: <pymongo.results.UpdateResult object at 0x7f6cace0fa88>3 312345678910{‘age': {'$gt': 20}}为查找年龄大于20的, {‘inc': {‘age': 1}}为将年龄+1运行结果:
{'ok': 1, 'n': 1}
1
2
除了上述常用的之外, 还包括find_one_and_delete()查找后删除、find_one_and_replace()查找后替换, 有兴趣可以百度深入了解.
总结
以上所述是小编给大家介绍的Python与Mongodb数据库之间的操作方法,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对网站的支持!
如果你觉得本文对你有帮助,欢迎转载,烦请注明出处,谢谢!
声明:本页内容来源网络,仅供用户参考;我单位不保证亦不表示资料全面及准确无误,也不保证亦不表示这些资料为最新信息,如因任何原因,本网内容或者用户因倚赖本网内容造成任何损失或损害,我单位将不会负任何法律责任。如涉及版权问题,请提交至online#300.cn邮箱联系删除。
本文实例讲述了python连接、操作mongodb数据库的方法。分享给大家供大家参考,具体如下:数据库连接frompymongoimportMongoClien
本文实例讲述了Python使用pyodbc访问数据库操作方法。数据库连接数据库连接网上大致有两种方法,一种是使用pyodbc,另一种是使用win32com.cl
本篇博文主要介绍Python连接各种数据库的方法及简单使用包括关系数据库:sqlite,mysql,mssql非关系数据库:MongoDB,Redis代码写的比
MongoDB简介MongoDB是一个开源的、文档型的NoSQL数据库程序。MongoDB将数据存储在类似JSON的文档中,操作起来更灵活方便。NoSQL数据库
Python直接连接mongodb数据库进行查询操作1、安装所需模块使用到的是pymongo模块,安装方法:pipinstallpymongo2、环境验证3、连