安装

pip install pymongo

连接mongodb

from pymongo import MongoClient

my_client = MongoClient("127.0.0.1",27017)

mdb = my_client["stutent"]   # 指定连接的库名
print(mdb) # Database(MongoClient(host=['127.0.0.1:27017'], document_class=dict, tz_aware=False, connect=True), 'stutent') # connect=True 表示连接成功
# document_class=dict 查询结果以字典的形式返回

数据的增删改查

添加

# 添加单条数据
res = mdb.user.insert_one({"name":"boy"})
print(res.inserted_id) # 不是字符串
print(type(res.inserted_id)) # <class 'bson.objectid.ObjectId'> # 添加多条数据
res = mdb.stutent.insert_many([{"name":"小胡"},{"name":"小花"}])
print(res.inserted_ids) # [ObjectId('5d2f247ee6390ef6741370a7'), ObjectId('5d2f247ee6390ef6741370a8')]
print(type(res.inserted_ids)) # <class 'list'>

查看

查找符合条件的第一条数据

res = mdb.stutent.find_one({"name":"小黑"})
res = mdb.stutent.find_one({"_id":ObjectId("5d2ed96e38887b85450ed6d8")})

查找所有数据

res = mdb.stutent.find({})   # 返回的是可迭代对象
print(list(res))
"""
for i in res:
print(i)
"""
"""
- 我们通过find查询到了所有数据
- 如果前端页面需要用json数据进行渲染页面
- 但_id并不是字符串类型而是ObjectId类型,且无法直接转换成json
- 那么我们可以通过下面这两种方式将ObjectID转换成json
"""

第一种方式,效率不高

import json
res_list = []
for user in res:
# 将列表中的_id值转换成字符串
user["_id"] = str(user.get("_id"))
res_list.append(user)
# 将列表序列化
ret = json.dumps(res_list)
print(ret)

第二种方式,效率高

res = list(mdb.stutent.find({})) # 返回的是可迭代对象
import json
for index,user in enumerate(res):
res[index]["_id"] = str(user.get("_id"))
ret = json.dumps(res)
print(ret)

修改

# 修改符合条件所有数据的第一条
res = mdb.stutent.update_one({"name":"小花"},{"$set":{"name":"小二b"}}) # 修改符合条件的所有数据,没有就添加一条
res = mdb.stutent.update_many({"name":"小花"},{"$set":{"name":"小二b","age":80}},True)
print(res) # {'n': 1, 'nModified': 1, 'ok': 1.0, 'updatedExisting': True}

批量操作

s = {"name":{"$regex":"胡"}}   # 模糊匹配修改器
data = {
"$set":{"sex":"man","hobby":["抽烟","喝酒"]}
}
mdb.stutent.update_many(s,data)

用字典的方法对数据库中的数据进行修改

# 返回所以数据中符合条件的第一条数据,并且是dict格式
res = mdb.stutent.find_one({"name":"小胡"})
# {'_id': ObjectId('5d2f246d7fb0bb7a411f350c'), 'name': '小胡', 'sex': 'man', 'hobby': ['抽烟', '喝酒']}
print(res) res["sex"] = "male" # 在内存级别修改dict中的数据,所有字典的方法都可以使用
# 在通过update方法更新到数据库
mdb.stutent.update_one({"name":"小胡"},{"$set":{"sex":res.get("sex")}})
# { "_id" : ObjectId("5d2f246d7fb0bb7a411f350c"), "name" : "小胡", "sex" : "male", "hobby" : [ "抽烟", "喝酒" ] }

删除

# 只删除符合条件的第一条数据
res = mdb.stutent.delete_one({"name":"大呲花"})
# 返回删除数据的数量
print(res.deleted_count) # 删除符合条件的所有数据
res = mdb.stutent.delete_many({"name":"小二b"})
print(res.deleted_count)

其他操作

import pymongo
"""
DESCENDING 从大到小排序
ASCENDING 从小到大排序
"""
# 返回的是可迭代对象
# sort排序
res = mdb.stutent.find().sort("age",pymongo.ASCENDING)
for i in res:
print(i) # 选取
mdb.stu.find().limit(2)
# 跳过
mdb.stu.find().skip(2) # 分页
res = list(mdb.stu.find().sort("age",pymongo.ASCENDING).limit(2).skip(4))
print(res)
from bson import ObjectId
# 把字符串转换成ObjectId对象进行查询
res = mdb.user.find_one({"_id":ObjectId("5d2ed96e38887b85450ed6d8")})

其他操作

import pymongo

client = pymongo.MongoClient(host='127.0.0.1',port=27017)

mdb = client["post_info"]

# 查询数据库中有多少条数据
ret=mdb.post_info.find({}).count()
print(ret) # 查询部落中指定的分类
res = mdb.post_info.find_one({"cbdname":"开心乐园"})
print(res)

MongoDB-python操作mongodb的更多相关文章

  1. [MongoDB]Python 操作 MongoDB

    from pymongo import MongoClient mc = MongoClient('localhost',27017) db = mc.users db.users.save({'na ...

  2. Python 操作 mongodb 数据库

    原文地址:https://serholiu.com/python-mongodb 这几天在学习Python Web开发,于 是做准备做一个博客来练练手,当然,只是练手的,博客界有WordPress这样 ...

  3. python操作mongodb

    # python操作mongodb # 首先,引入第三方模块pymongo,该模块是python用来操作mongodb的 import pymongo # 第二步,设置ip地址,以及表格名称,表格名字 ...

  4. 使用Python操作MongoDB

    MongoDB简介(摘自:http://www.runoob.com/mongodb/mongodb-intro.html) MongoDB 由C++语言编写,是一个基于分布式文件存储的开源数据库系统 ...

  5. mongoDB python 操作

    mongoDB python 操作 import pymongo mongo_client = pymongo.MongoClient(host="127.0.0.1",port= ...

  6. python操作三大主流数据库(10)python操作mongodb数据库④mongodb新闻项目实战

    python操作mongodb数据库④mongodb新闻项目实战 参考文档:http://flask-mongoengine.readthedocs.io/en/latest/ 目录: [root@n ...

  7. python操作三大主流数据库(9)python操作mongodb数据库③mongodb odm模型mongoengine的使用

    python操作mongodb数据库③mongodb odm模型mongoengine的使用 文档:http://mongoengine-odm.readthedocs.io/guide/ 安装pip ...

  8. python操作三大主流数据库(8)python操作mongodb数据库②python使用pymongo操作mongodb的增删改查

    python操作mongodb数据库②python使用pymongo操作mongodb的增删改查 文档http://api.mongodb.com/python/current/api/index.h ...

  9. python操作三大主流数据库(7)python操作mongodb数据库①mongodb的安装和简单使用

    python操作mongodb数据库①mongodb的安装和简单使用 参考文档:中文版:http://www.mongoing.com/docs/crud.html英文版:https://docs.m ...

  10. MongoDB的安装与python操作MongoDB

    一.安装MongoDB 因为我个人使用的是windows,就只记录下windows下的安装 1.下载安装 就是官网,下载msi,选个路径安装 2.配置 看见别的地方说需要手动在bin同级目录创建dat ...

随机推荐

  1. Https请求被中止: 未能创建 SSL/TLS 安全通道

    可以参考https://www.cnblogs.com/ccsharp/p/3270344.html 和https://blog.csdn.net/baidu_27474941/article/det ...

  2. Myeclipse debug 调式java 报错,留做后面解决!

    FATAL ERROR in native method: JDWP No transports initialized, jvmtiError=AGENT_ERROR_TRANSPORT_INIT( ...

  3. opengl 笔记

    1. 本函数可以禁用多边形正面或背面上的光照.阴影和颜色计算及操作,消除不必要的渲染计算是因为无论对象如何进行旋转或变换,都不会看到多边形的背面.用GL_CULL_FACE参数调用glEnable和g ...

  4. Visual Stdio C++ 编译常见问题

    1. new 数组出现崩溃 new 数组时数组下标出现负值,但未做出错处理: new数组,数组字节数大于4MB的时候有可能出现crash! 解决办法: 加入 try  catch 后,这样的错误几乎没 ...

  5. VBA决策(十)

    决策允许程序员控制脚本或其中一个部分的执行流程.执行由一个或多个条件语句控制.以下是在大多数编程语言中找到的典型决策结构的一般形式. VBA提供了以下类型的决策声明. 点击以下链接来查看它们的详细信息 ...

  6. 解决window 12 service 不能调用excel ,报"System.Runtime.InteropServices.COMException (0x800A03EC)

    Step1: 运行comexp.msc -32 注意因为excel 是32 位的,所以这里用的32位的操作, 如用64位的操作命令:dcomcnfg.exe,将找不到excel com 进入compo ...

  7. Java 之 HashMap 集合

    一.HashMap 概述 java.util.HashMap<k,v> 集合 implements Map<k,v> 接口 HashMap 集合的特点: 1.HashMap 集 ...

  8. Hibernate-validate工具类,手动调用校验返回结果

    引言:在常见的工程中,一般是在Controller中校验入参,校验入参的方式有多种,这里介绍的使用hibernate-validate来验证,其中分为手动和自动校验,自动校验可以联合spring,使用 ...

  9. 阿里高级架构师教你使用Spring JMS处理消息事务源码案例

    消费者在接收JMS异步消息的过程中会发生执行错误,这可能会导致信息的丢失.该源码展示如何使用本地事务解决这个问题.这种解决方案可能会导致在某些情况下消息的重复(例如,当它会将信息储存到数据库,然后监听 ...

  10. C++自问

    1.forwarding reference 2.move 3. map的内部实现 rb tree,但rbtree优点是什么?使用情况?和b+有啥区别? 4.顺序容器和关联容器的区别: 本质区别是顺序 ...