pymongo 一篇文章搞定

一 安装

pip install pymongo

二 python连接mongodb数据库的前提

  • 确保pymongo安装完毕
  • mongodb数据库的服务器端(mongod)必须处于启动状态

三 连接mongodb

   连接MongoDB我们需要使用PyMongo库里面的MongoClient,一般来说传入MongoDB的IP及端口即可,第一个参数为地址host,第二个参数为端口port,端口如果不传默认是27017。
  • 方式一

    client=pymongo.MongoClient(host=‘127.0.0.1‘,port=27017)
  • 方式二

    lient = pymongo.MongoClient(‘mongodb://localhost:27017/‘)

四 指定数据库

  • 特点:找不到数据库,自动创建数据库
  • 代码:
    db=client.test #数据库名为test 
    或者 db = client[‘test‘]

五 指定集合

  • 特点:找不到集合,自动创建集合
  • 代码:
    collection=db.student
  或者collection = db[‘students‘]

六 插入数据

单条数据的插入

student = {
    ‘id‘: ‘20170101‘,
    ‘name‘: ‘Jordan‘,
    ‘age‘: 20,
    ‘gender‘: ‘male‘
}
  • 方式一:result=collection.insert(student)
  • 方式二:result=collection.insert_one(student) #推荐使用

多条数据的插入

student2 = {
    ‘_id‘: ‘2‘,
    ‘name‘: ‘Jordan‘,
    ‘age‘: 30,
    ‘gender‘: ‘male‘
}

student3 = {
    ‘_id‘: ‘3‘,
    ‘name‘: ‘Mike‘,
    ‘age‘: 20,
    ‘gender‘: ‘male‘
}
  • 方式一:result=collection.insert([student2,student3])
  • 方式二:result=collection.insert_many([student2,student3])#推荐使用

注意:官方推荐使用insert_one()和insert_many()方法将插入单条和多条记录分开。

七 查询

#根据系统生成的id查询 from bson.objectid import ObjectId

result = collection.find_one({‘_id‘: ObjectId(‘593278c115c2602667ec6bae‘)})
print(result)
  • 1 单条查询

results = collection.find_one({‘age‘: 20})
  • 2 查询结果返回多条

result_list=collection.find({‘age‘:20})
print(result_list)
for result in result_list:
    print(result[‘_id‘])

2.2模糊查询

‘‘‘

符号含义示例
$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]}}

‘‘‘

# 如果要查询年龄大于20的数据,则写法如下:

results = collection.find({‘age‘: {‘$gt‘: 20}})

2.3 正则查询

"""
符号含义示例示例含义
$regex匹配正则{‘name‘: {‘$regex‘: ‘^M.*‘}}name以M开头
$exists属性是否存在{‘name‘: {‘$exists‘: True}}name属性存在
$type类型判断{‘age‘: {‘$type‘: ‘int‘}}age的类型为int
$mod数字模操作{‘age‘: {‘$mod‘: [5, 0]}}年龄模5余0
$text文本查询{‘$text‘: {‘$search‘: ‘Mike‘}}text类型的属性中包含Mike字符串
$where高级条件查询{‘$where‘: ‘obj.fans_count == obj.follows_count‘}自身粉丝数等于关注数
"""
# 另外还可以进行正则匹配查询,例如查询名字以M开头的学生数据,示例如下:

results = collection.find({‘name‘: {‘$regex‘: ‘^M.*‘}})

3 其他

  • count = collection.find().count() #统计查询返回的数量
  • results = collection.find().sort([(‘age‘,pymongo.ASCENDING),(‘name‘, pymongo.ASCENDING)]) #多条件排序
  • results = collection.find().sort(‘name‘, pymongo.ASCENDING).skip(2) #分页提取数据

八 更新文档

condition = {‘name‘: ‘Kevin‘}
student = collection.find_one(condition)
student[‘age‘] = 25
result = collection.update(condition, student)
#在这里我们将name为Kevin的数据的年龄进行更新,首先指定查询条件,然后将数据查询出来,修改年龄,
#之后调用update方法将原条件和修改后的数据传入,即可完成数据的更新。
condition = {‘age‘: {‘$gt‘: 20}}
result = collection.update_one(condition, {‘$inc‘: {‘age‘: 1}})
print(result)
print(result.matched_count, result.modified_count)

# 在这里我们指定查询条件为年龄大于20,然后更新条件为{‘$inc‘: {‘age‘: 1}},执行之后会讲第一条符合条件的数据年龄加1。
#更新多条数据condition = {‘age‘: {‘$gt‘: 20}}
result = collection.update_many(condition, {‘$inc‘: {‘age‘: 1}})
print(result)
print(result.matched_count, result.modified_count)

九 删除文档

# 另外依然存在两个新的推荐方法,delete_one()和delete_many()方法,示例如下:

result = collection.delete_one({‘name‘: ‘Kevin‘})
print(result)
print(result.deleted_count)
result = collection.delete_many({‘age‘: {‘$lt‘: 25}})
print(result.deleted_count)

文章推荐

https://www.cnblogs.com/pyedu/p/10313148.html

原文地址:https://www.cnblogs.com/angle6-liu/p/10480314.html

时间: 2024-08-30 07:25:59

pymongo 一篇文章搞定的相关文章

一篇文章搞定Markdown

一篇文章搞定Markdown 原文地址:http://blog.51cto.com/10984621/2113527

一篇文章搞定前端面试

本文旨在用最通俗的语言讲述最枯燥的基本知识 面试过前端的老铁都知道,对于前端,面试官喜欢一开始先问些HTML5新增元素啊特性啊,或者是js闭包啊原型啊,或者是css垂直水平居中怎么实现啊之类的基础问题,当你能倒背如流的回答这些之后,面试官脸上会划过一丝诡异的笑容,然后晴转多云,故作深沉的清一下嗓子问:从用户输入URL到浏览器呈现页面经过了哪些过程?如果你懂,巴拉巴拉回答了一堆,他又接着问:那网页具体是如何渲染出来的呢?如果你还懂,又巴拉巴拉的回答了一堆,他还会继续问:那你有哪些网页性能优化的经验

一篇文章搞定MySQL命令

MySQL的基本操作可以包括两个方面:MySQL常用语句如高频率使用的增删改查(CRUD)语句和MySQL高级功能,如存储过程,触发器,事务处理等.而这两个方面又可以细分如下: MySQL常用语句 表(或者数据库)的CRUD 表数据的CRUD,其中表数据查询使用最多,也更复杂.查询可以按照单表还是多表可以分为:单表SELECT查询和多表的联结查询(INNER JOIN, LEFT JOIN, RIGHT JOIN和FULL JOIN)以及组合查询UNION和UNION ALL SQL语句中各个关

数据库的原理,一篇文章搞定(二)

客户端管理器 客户端管理器是处理客户端通信的.客户端可以是一个(网站)服务器或者一个最终用户或最终应用.客户端管理器通过一系列知名的API(JDBC, ODBC, OLE-DB -)提供不同的方式来访问数据库. 客户端管理器也提供专有的数据库访问API. 当你连接到数据库时: 管理器首先检查你的验证信息(用户名和密码),然后检查你是否有访问数据库的授权.这些权限由DBA分配. 然后,管理器检查是否有空闲进程(或线程)来处理你对查询. 管理器还会检查数据库是否负载很重. 管理器可能会等待一会儿来获

数据库的原理,一篇文章搞定(三)

合并联接 合并联接是唯一产生排序的联接算法. 注:这个简化的合并联接不区分内表或外表:两个表扮演同样的角色.但是真实的实现方式是不同的,比如当处理重复值时. 1.(可选)排序联接运算:两个输入源都按照联接关键字排序. 2.合并联接运算:排序后的输入源合并到一起. 排序 我们已经谈到过合并排序,在这里合并排序是个很好的算法(但是并非最好的,如果内存足够用的话,还是哈希联接更好). 然而有时数据集已经排序了,比如: 如果表内部就是有序的,比如联接条件里一个索引组织表 [译者注: index-orga

数据库的原理,一篇文章搞定(一)

一提到关系型数据库,我禁不住想:有些东西被忽视了.关系型数据库无处不在,而且种类繁多,从小巧实用的 SQLite 到强大的 Teradata .但很少有文章讲解数据库是如何工作的.你可以自己谷歌/百度一下『关系型数据库原理』,看看结果多么的稀少[译者注:百度为您找到相关结果约1,850,000个-] ,而且找到的那些文章都很短.现在如果你查找最近时髦的技术(大数据.NoSQL或JavaScript),你能找到更多深入探讨它们如何工作的文章. 难道关系型数据库已经太古老太无趣,除了大学教材.研究文

一篇文章搞定mongodb

一 安装 1 安装目录下新建文件夹data,etc,logs #在bin文件下启动cmd,指定数据存储的路径mongod --dbpath D:\MongoDB\data\db 2 etc文件夹中新建mongodb.conf配置文件 #配置文件中书写的配置信息 dbpath=D:\MongoDB\data #数据库路径 logpath=D:\MongoDB\logs\mongodb.log #日志输出文件路径 logappend=true #错误日志采用追加模式,配置这个选项后mongodb的日

一篇文章搞懂DataSet、DataFrame、RDD-《每日五分钟搞定大数据》

1. 三者共性: 1.RDD.DataFrame.Dataset全都是spark平台下的分布式弹性数据集,为处理超大型数据提供便利 2.三者都有惰性机制,执行trainform操作时不会立即执行,遇到Action才会执行 3.三者都会根据spark的内存情况自动缓存运算,这样即使数据量很大,也不用担心会内存溢出 4.三者都有partition的概念,如 var predata=data.repartition(24).mapPartitions{       PartLine => {     

一篇文章搞懂python2、3编码

说在前边: 编码问题一直困扰着每一个程序员的编程之路,如果不将它彻底搞清楚,那么你的的这条路一定会走的格外艰辛,尤其是针对使用python的程序员来说,这一问题更加显著, 因为python有两个版本,这两个版本编码格式却完全不同,但我们却经常需要兼顾这两个版本,所以出现各种问题的几率就大了很多. 所以在这里我试图用一篇文章来彻底梳理整个python语言的编码问题,尽量降低以后在这方面举到问题的可能性. ps 此文一定程度上参考和引用了alex的博客:“https://www.cnblogs.co