python操作mongoDB(pymongo的使用)
pymongo操作手册
连接数据库
- 方法一(推荐)
import pymongo
client = pymongo.MongoClient(host="localhost",port=27017)
- 方法二
import pymongo
client = pymongo.MongoClient(host="mongodb://127.0.0.1:27017/")
指定数据库
- 方法一(推荐)
db = client["dbName"] # 指定dbName数据库
- 方法二
db = client.test
指定集合
- 方法一(推荐)
collection = db["colName"] # 指定colName集合
- 方法二
collection = db.colName
插入数据
insert()
insert()方法可以插入一条或多条数据,返回主键
_id或_id列表
插入一条数据示例
person_1 = {
"name": "kainhuck",
"gender": "boy",
"hobby": [
"python", "golang", "dart"
]
}
ret = collection.insert(person_1)
print(ret) # 输出: 5e575bc1601c0c6e37bbde3b
插入多条示例
person_1 = {
"name": "kainhuck",
"gender": "boy",
"hobby": [
"python", "golang", "dart"
]
}
person_2 = {
"name": "kainhuck",
"gender": "boy",
"hobby": [
"python", "golang", "dart"
]
}
ret = collection.insert([person_1, person_2])
print(ret)
# 输出: [ObjectId('5e575c417c310d22c0fda767'), ObjectId('5e575c417c310d22c0fda768')]
但是现在官方已经不推荐使用该方法,而是使用下面两种方法
insert_one()
插入单条记录,返回InsertOneResult对象
通过 inserted_id 属性获取
_id
person_1 = {
"name": "kainhuck",
"gender": "boy",
"hobby": [
"python", "golang", "dart"
]
}
ret = collection.insert_one(person_1)
print(ret) # 输出: <pymongo.results.InsertOneResult object at 0x7fbebae38b00>
print(ret.inserted_id) # 输出: 5e575d179fd474694b4b0d76
insert_many()
插入多条数据,返回InsertManyResult对象
通过 inserted_ids 属性获取
_id列表
person_1 = {
"name": "kainhuck",
"gender": "boy",
"hobby": [
"python", "golang", "dart"
]
}
person_2 = {
"name": "kainhuck",
"gender": "boy",
"hobby": [
"python", "golang", "dart"
]
}
ret = collection.insert_many([person_1, person_2])
print(ret) # 输出: <pymongo.results.InsertManyResult object at 0x7fc17e7a8d80>
print(ret.inserted_ids)
# 输出: [ObjectId('5e575de663ea85cf36ac6083'), ObjectId('5e575de663ea85cf36ac6084')]
查询数据
查询参数语法同 MongoDB语法
| 符号 | 含义 | 示例 |
|---|---|---|
$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]}} |
另外,还可以进行正则匹配查询。例如,查询名字以M开头的学生数据,示例如下:
results = collection.find({'name': {'$regex': '^M.*'}})
这里使用$regex来指定正则匹配,^M.*代表以M开头的正则表达式。
这里将一些功能符号再归类为下表。
| 符号 | 含义 | 示例 | 示例含义 |
|---|---|---|---|
$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'} |
自身粉丝数等于关注数 |
find_one()
返回一个结果,dict类型或者None
per = collection.find_one({"name": "kainhuck"})
print(per)
# 输出:
# {'_id': ObjectId('5e575bb73570a50e5dea473a'), 'name': 'kainhuck', 'gender': 'boy', 'hobby': ['python', 'golang', 'dart']}
find()
返回多个结果,是一个迭代器
不加参数表示全部查询
pers = collection.find({"name": "kainhuck"})
for each in pers:
print(each)
count_documents()
统计满足条件的个数
不加参数表示统计所有个数
count = collection.count_documents({"name": "kainhuck"})
print(count)
sort()
将返回结果按条件排序,返回迭代起
pymongo.ASCENDING 升序
pymongo.DESCENDING 降序
返回迭代器
results = db.collection.find().sort('name', pymongo.ASCENDING) # 升序(默认)
results = db.collection.find().sort('name', pymongo.DESCENDING) #降序
# 多列排序
results = db.collection.find().sort([
("name", pymongo.ASCENDING),("age", pymongo.DESCENDING)
])
skip()
跳过记录数
0 代表不跳过
返回迭代器
results = collection.find().skip(10)
limit()
返回上限
0 代表无上限
返回迭代器
results = collection.find().limit(10)
更新数据
查询参数语法同 MongoDB语法
update_one()
修改单条文档,返回结果是UpdateResult类型
调用
matched_count和modified_count属性分别获取匹配的条数和影响的条数
ret = collection.update_one({"name": "kainhuck"}, {"$set": {"gender": "girl"}})
print(ret.matched_count) # 输出: 1
print(ret.modified_count) # 输出: 1
update_many()
修改多条文档,返回结果是UpdateResult类型
调用
matched_count和modified_count属性分别获取匹配的条数和影响的条数
ret = collection.update_many({"name": "kainhuck"}, {"$set": {"gender": "girl"}})
print(ret.matched_count) # 输出: 9
print(ret.modified_count) # 输出: 8
删除数据
remove()
删除指定条件的所有数据
result = db.collection.remove({"age" : {"$gte" : 10}})
print(result) # {'ok': 3, 'n': 3}
delete_one()
删除第一条符合条件的数据,返回DeleteResult类型数据
result = collection.delete_one({'name': 'kainhuck'})
print(result.deleted_count) # 1
delete_many()
删除所有符合条件的数据,返回DeleteResult类型数据
result = collection.delete_many({'name': 'kainhuck'})
print(result.deleted_count) # 8
其他方法
find_one_and_delete()find_one_and_replace()find_one_and_update()
python操作mongoDB(pymongo的使用)的更多相关文章
- Python操作MongoDB(PyMongo模块的使用)
#!/usr/bin/env python #coding:utf-8 # Author: --<qingfengkuyu> # Purpose: MongoDB的使用 # Creat ...
- MongoDB学习笔记:Python 操作MongoDB
MongoDB学习笔记:Python 操作MongoDB Pymongo 安装 安装pymongopip install pymongoPyMongo是驱动程序,使python程序能够使用Mong ...
- python操作三大主流数据库(8)python操作mongodb数据库②python使用pymongo操作mongodb的增删改查
python操作mongodb数据库②python使用pymongo操作mongodb的增删改查 文档http://api.mongodb.com/python/current/api/index.h ...
- Python 操作 mongodb 数据库
原文地址:https://serholiu.com/python-mongodb 这几天在学习Python Web开发,于 是做准备做一个博客来练练手,当然,只是练手的,博客界有WordPress这样 ...
- python操作mongodb
# python操作mongodb # 首先,引入第三方模块pymongo,该模块是python用来操作mongodb的 import pymongo # 第二步,设置ip地址,以及表格名称,表格名字 ...
- 使用Python操作MongoDB
MongoDB简介(摘自:http://www.runoob.com/mongodb/mongodb-intro.html) MongoDB 由C++语言编写,是一个基于分布式文件存储的开源数据库系统 ...
- MongoDB的安装与python操作MongoDB
一.安装MongoDB 因为我个人使用的是windows,就只记录下windows下的安装 1.下载安装 就是官网,下载msi,选个路径安装 2.配置 看见别的地方说需要手动在bin同级目录创建dat ...
- python 操作mongoDB数据库
网上关于python 操作mongoDB的相关文章相对不是很多,并且质量也不是很高!下面给出一个完整的 增删改查示例程序! #!/usr/bin/python # -*- coding: utf-8 ...
- 【转】Python操作MongoDB
Python 操作 MongoDB 请给作者点赞--> 原文链接 这篇文章主要介绍了使用Python脚本操作MongoDB的教程,MongoDB作为非关系型数据库得到了很大的宣传力度,而市面 ...
随机推荐
- Codeforces Round #593 (Div. 2)D(螺旋形模拟)
#define HAVE_STRUCT_TIMESPEC#include<bits/stdc++.h>using namespace std;vector<int>po[100 ...
- thymeleaf模板引擎简介
一:thymeleaf 学习笔记---http://www.blogjava.net/bjwulin/articles/395185.html thymeleaf是一个支持html原型的自然引擎,它在 ...
- linux的压力测试工具
只能用于http的测试工具: ab: 安装方法:yum install httpd-tools -y 使用:ab -c 1000 -n 10000 + ip -c 为并发数,-n ...
- win10 安装"pip install orange3" 出现LINK : fatal error LNK1158: cannot run 'rc.exe' 错误的解决办法
解决办法: 从(本例使用的是64位的python3.6 注意:如果python的版本是32位,则使用x86:如果是64位,则使用x64;) 复制一下两个文件 rc.exe rcdll.dll 到
- Android抓包分析-fiddler版
本文介绍的是如何使用Fiddler工具抓取Android应用的HTTP协议的数据包 工具 Genymotion模拟器 笔记本电脑一台(Win7) Fiddler(v4.6.2),下载地址:http:/ ...
- 【已解决】iOS11使用MJRefresh上拉加载结束tableView闪动、跳动的问题
更新提示: [2018年11月20日更新] 经过放置在项目中运行发现,如果在快速滚动tableview的时候会在下面这行代码中崩溃(慢慢的滚动是没关系的-): CGFloat cellHeight = ...
- 登陆页面的Sql注入
自己手工注入的知识比较薄弱,这里就记录一下注入过程 题目: .登陆页面,使用sql万能密码可以登陆账号,但是flag不会自己跳出来,出题人是想让我们手工注入 常用万能密码: 'or'='or' adm ...
- 5 HTML脚本&字符实体&URL
HTML脚本: 用<script>标签定义客户端脚本,比如JavaScript script元素即可包含脚本语句,也可以通过src属性指向外部脚本文件 JavaScript常用于图片操作. ...
- 从分支git clone
git clone -b <branch> <remote_repo> 具体用法:git clone -b 分支名 https://www.xx.com/app.git 以上就 ...
- Linux下安装Docker,报错docker: unrecognized service的两种解决方案
转自(方法1):https://www.cnblogs.com/ECJTUACM-873284962/p/9362840.html