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. (Good topic)四因数 (leetcode 181周赛T2)

     四因数难度中等1收藏分享切换为英文关注反馈给你一个整数数组 nums,请你返回该数组中恰有四个因数的这些整数的各因数之和. 如果数组中不存在满足题意的整数,则返回 0 .   示例: 输入:nums ...

  2. C++ MiniZip实现目录压缩与解压

    Zlib是一个开源的数据压缩库,提供了一种通用的数据压缩和解压缩算法.它最初由Jean-Loup Gailly和Mark Adler开发,旨在成为一个高效.轻量级的压缩库,其被广泛应用于许多领域,包括 ...

  3. 请查收,本周刷屏的两大热点「GitHub 热点速览」

    如果你逛 HackerNews 或者是推特,你一定会被 multipleWindow3dScene 这个跨窗口渲染项目的成果刷屏,毕竟国内的技术平台上也出现了不少的模仿项目.另外一个热点,便是你在白板 ...

  4. UNCTF-Crypto wp

    2020年 easy_rsa 题目 from Crypto.Util import number import gmpy2 from Crypto.Util.number import bytes_t ...

  5. GOF23--23种设计模式(一)

    一.什么是设计模式 设计模式(Design  Pattern)是前辈们对代码开发经验的总结,是解决一系列特定问题的套路. 它不是语法规定,而是一套用来提高代码复用性,可读性,可维护性,稳健性,安全性的 ...

  6. NodeJS连接mysql,报错ER_NOT_SUPPORTED_AUTH_MODE: Client does not support authentication protocol requested by server; consider upgrading MySQL client

    我是mysql8.0以上的版本,在用NodeJS连接服务器中mysql数据库时开始报错 这表示服务器启动起来,但是数据库中密码协议出错,我从网上查到的结果告诉我,是mysql8.0支持了一个新的密码协 ...

  7. python tkinter使用(四)

    python tkinter使用(四) 本篇文章主要讲下tkinter 的文本框相关. tkinter中用Entry来实现输入框,类似于android中的edittext. 具体的用法如下: 1:空白 ...

  8. 【GIT-精讲】从零玩转Git-基础理论

    关于版本控制 一.什么是版本控制 版本控制(Version Control Systems)版本控制(Revision control)是一种软件工程技巧 在开发的过程中,确保由不同人所编辑的同一档案 ...

  9. 一键打包,随时运行,Python3项目虚拟环境一键整合包的制作(Venv)

    之前我们介绍了如何使用嵌入式 Python3 环境给项目制作一键整合包,在使用嵌入式 Python 环境时,通常是作为另一个应用程序的一部分,而Python3虚拟环境是为了在开发过程中隔离项目所需的 ...

  10. 记一次 .NET某收银软件 非托管泄露分析

    一:背景 1. 讲故事 在我的分析之旅中,遇到过很多程序的故障和杀毒软件扯上了关系,有杀毒软件导致的程序卡死,有杀毒软件导致的程序崩溃,这一篇又出现了一个杀毒软件导致的程序非托管内存泄露,真的是分析多 ...