pymongo基本使用

import pymongo
from bson.objectid import ObjectId # 连接方式1
client = pymongo.MongoClient(host='localhost', port=27017) # 连接方式2
# client = pymongo.MongoClient('mongodb://localhost:27017/') # 创建数据库
db = client['test'] # 创建集合
collection = db['students'] # 创建字典数据
student = {
'id': '20170101',
'name': 'Jordan',
'age': 20,
'gender': 'male'
} # 插入单条
result = collection.insert_one(student)
print(result) # 插入多条
student1 = {
'id': '20170101',
'name': 'Jordan',
'age': 20,
'gender': 'male'
} student2 = {
'id': '20170202',
'name': 'Mike',
'age': 21,
'gender': 'male'
}
result = collection.insert_many([student1, student2])
print(result)
print(result.inserted_ids) # 查询一个
result = collection.find_one({'age': 20})
print(type(result))
print(result) # 使用bson查询
# bson称之为二进制的json --> BSON对JSON的一大改进就是,它会将JSON的每一个元素的长度存在元素的头部
result = collection.find_one({'_id': ObjectId('6475f612bb7f540f86a499a3')})
print(type(result))
print(result) # 查询多条
results = collection.find({'age': 20})
print(results) # 返回一个cursor类型 相当于一个生成器
for result in results:
print(result) # 查询所有
results = collection.find()
for result in results:
print(result) # 返回指定条数
results = collection.find().limit(3)
for result in results:
print(result) # 条件查询
results = collection.find({'age': {'$gt': 20}})
for result in results:
print(result)
'''
$gt 大于 $gte 大于等于 $ne 不等于
$lt 小于 $lte 小于等于
$in 在范围内
$nin 不在范围内
''' # 支持正则匹配
results = collection.find({'name': {'$regex': '^M.*'}})
for result in results:
print(result) # 计数
count = collection.count_documents({'name': 'Mike'})
print(count) count2 = collection.count_documents({})
print(count2) # 排序
results = collection.find().sort('name', pymongo.ASCENDING) # 升序 pymongo.ASCENDING 倒序 pymongo.DESCENDING
print([result['name'] for result in results]) # 偏移
results = collection.find().sort('name', pymongo.ASCENDING).skip(2) # 忽略前两个元素
print([result['name'] for result in results]) # 组合使用skip\limit
results = collection.find().sort('name', pymongo.ASCENDING).skip(2).limit(2) # 先偏移两个 再获取两个
print([result['name'] for result in results]) # 数据量千万、亿级别,不要使用偏移,如下是解决方案,这时需要记录好上次查询的_id。
from bson.objectid import ObjectId
collection.find({'_id': {'$gt': ObjectId('593278c815c2602678bb2b8d')}}) # 更新
condition = {'name': 'Mike'}
student = collection.find_one(condition)
print(student)
student['age'] = 24
result = collection.update_one(condition, {'$set': student})
print(result)
print(result.matched_count, result.modified_count) # 匹配的数据条数 影响的数据条数
'''
使用$set操作符号:
这样可以只更新 student 字典内存在的字段。
如果原先还有其他字段,则不会更新,也不会删除。
''' # 将年龄大于20的人,年龄自增1
condition = {'age': {'$gt': 20}}
result = collection.update_one(condition, {'$inc': {'age': 1}}) # 这里会将第一条匹配到的数据 其年龄自增1
print(result)
print(result.matched_count, result.modified_count) # 将所有年龄大于20的人,年龄自增1
condition = {'age': {'$gt': 19}}
result = collection.update_many(condition, {'$inc': {'age': 1}})
print(result)
print(result.matched_count, result.modified_count) # 删除
result = collection.delete_one({'name': 'Jordan'})
print(result)
print(result.deleted_count)
result = collection.delete_many({'age': {'$lt': 25}})
print(result.deleted_count)

【mongodb】pymongo使用的更多相关文章

  1. [mongoDB]PyMongo Cursor Not Found Error

    Python跑一个aggregate脚本,报错:pymongo.errors.CursorNotFound: Cursor not found, cursor id: 35411720832 搜了下原 ...

  2. MongoDB pymongo模块

    安装pymongo模块 pip install pymongo 连接mongodb代码,生成pymongo对象,传入连接服务器相关参数 ip 端口 如果使用指定的账户登录,设置要登录的账户和密码,然后 ...

  3. Python操作MongoDB(PyMongo模块的使用)

    #!/usr/bin/env python #coding:utf-8 # Author:   --<qingfengkuyu> # Purpose: MongoDB的使用 # Creat ...

  4. MongoDB,pymongo

    MongoDB: 数据库,nosql [{ id:1 name:"蔡文姬" age: 16 gender:"女" }, { id:1 name:"蔡文 ...

  5. python操作mongoDB(pymongo的使用)

    pymongo操作手册 连接数据库 方法一(推荐) import pymongo client = pymongo.MongoClient(host="localhost",por ...

  6. python 操作MongoDB pymongo

    python操作MongoDB 1.安装pymongo pip install pymongo 2.连接数据库 启动mongodb服务: 包含mongod.exe文件夹bin :shift+鼠标右键, ...

  7. MongoDB pymongo模块 删除数据

    使用user集合,删除user集合的数据 import pymongo mongo_client = pymongo.MongoClient( host='192.168.0.112', port=2 ...

  8. MongoDB pymongo模块 查询

    查询 mongo_db 类似于 服务器命令行的db 我们可以db.user.find() 查询 find() 需要加上列表 import pymongo mongo_client = pymongo. ...

  9. MongoDB pymongo模块 插入数据

    insert_one(): 对一张不存在表插入数据,他会在插入数据同时自动生成数据表, 例如我要对chat集合插入数据,插入一个空数据 import pymongo mongo_client = py ...

  10. MongoDB pymongo模块 更新数据

    现在chat集合里有3条数据 import pymongo mongo_client = pymongo.MongoClient( host='192.168.0.112', port=27017, ...

随机推荐

  1. Tech Lead 要学会戴着镣铐跳舞

    这不是一篇讨喜的文章,至少不会是你常常看到的例如<成为优秀 Tech Lead 的六个建议>令人欢欣鼓舞的那一类.今天我们聊聊 Tech Lead 所面临的不那么轻松的现实问题 程序员一定 ...

  2. 【结对作业】第一周 | 学习体会day02

    今天我们想要实现线路的查询 发现了几个错误 1 <%-- 下拉表单的命名使用错误,导致无法接收前端数值--%> 首先我们很少使用下拉表单,之前用的也忘了,然后格式出现了错误 2 遇到typ ...

  3. 【驱动】串口驱动分析(二)-tty core

    前言 tty这个名称源于电传打字节的简称,在linux表示各种终端,终端通常都跟硬件相对应.比如对应于输入设备键盘鼠标,输出设备显示器的控制终端和串口终端.也有对应于不存在设备的pty驱动.在如此众多 ...

  4. BASE和最终一致性

    四种性质: 基本可用性,软状态,强一致性,弱一致性 更据更新数据后各进程访问到数据的时间和方式不同: 如何实现各种类型的一致性: 对于HBase数据库来讲:

  5. Git提交修正

    应用场景 日常开发中我们可能会遇到这样的问题 1.提交了代码有错误 2.提交的信息写错了 3.漏了一些文件没有提交 ...... 再或者我们写一个功能时,中间有很多小的提交,这中间就会产生特别多的co ...

  6. 数据智慧:C#中编程实现自定义计算的Excel数据透视表

    前言 数据透视表(Pivot Table)是一种数据分析工具,通常用于对大量数据进行汇总.分析和展示.它可以帮助用户从原始数据中提取关键信息.发现模式和趋势,并以可视化的方式呈现. 在数据透视表中,数 ...

  7. svn、git服务器配置进程方式网关不生效常见处理方法

    过华企盾DSC防泄密系统配置svn或者git服务器的时候,网关不生效如何解决? 1.先在cmd中运行一下命令netstat -ano|findstr "8080" 找到svn.gi ...

  8. 劫持 PE 文件:搜索空间缝隙并插入ShellCode

    因近期项目需要弄一款注入型的程序,但多次尝试后发现传统的API都会被安全软件拦截,比如 CreateRemoteThread.SetWindowHookEx.APC.GetThreadContext. ...

  9. 使用 PostgreSQL 实现 PageRank

    PageRank 算法 ​ 作为 Google 最早的一个网页排名算法,该算法在早期的搜索引擎中是搜索结果最为准确的,同时也是 Google 发家的一个重要算法.尽管这些年来该算法不再是 Google ...

  10. 最新消息:OpenAI GPT Store 正式上线,GPTs 应用商店来了!

    OpenAI推出的两款新产品和服务:GPT Store和ChatGPT Team,提供了许多全新的解决方案和功能,旨在帮助用户更轻松地使用和构建GPT工具,同时也增加了公司的收入来源.GPT Stor ...