安装

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. JS基础_使用工厂方法创建对象(了解下就行了,用的不多)

    <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title> ...

  2. 提高前端开发效率的N种方法

    一.使用固定的html模板和css公共样式 事先把模板建好,每次需要用的时候直接拿来就行,不再需要为浏览器兼容问题考虑太多时间 这里我整理了一套,希望对大家有帮助:http://www.cnblogs ...

  3. Oracle数据库默认的data pump dir在哪

    转自:https://zhidao.baidu.com/question/921271686131558779.html 使用select * from dba_directories;可以查到,例如 ...

  4. 1.Java集合-HashMap实现原理及源码分析

    哈希表(Hash  Table)也叫散列表,是一种非常重要的数据结构,应用场景及其丰富,许多缓存技术(比如memcached)的核心其实就是在内存中维护一张大的哈希表,而HashMap的实现原理也常常 ...

  5. 第二章 Django之python安装(1)

    Python 安装 Django 由百分百的纯 Python 代码编写而成,因此必须在系统中安装 Python .Django 需要 2.3 或更高版本的 Python.如果使用的是 Linux 或 ...

  6. 单元测试自动生成工具evosuite

    github地址:https://github.com/EvoSuite/evosuite 官网地址:http://www.evosuite.org   快速开始: 1.  junit  <de ...

  7. 1.Storm概述简介

    主要目标: 1. 离线计算是什么? 2. 流式计算是什么? 3. 流式计算与离线计算的区别? 4. Storm是什么? 5. Storm与Hadoop的区别? 6. Storm的应用场景及行业案例 7 ...

  8. 虚拟机配置双网卡适配器后(桥接和NAT模式),重新打开后两个适配器的ip都没有了(重启网卡报Job for network.service failed because the control process exited with error code)

    科普双网卡适配器的好处: 我是配了一个桥接模式的网卡和一个NAT模式的网卡,桥接模式,也就是将虚拟机的虚拟网络适配器与主机的物理网络适配器进行交接,虚拟机中的虚拟网络适配器可通过主机中的物理网络适配器 ...

  9. PAT Basic 1080 MOOC期终成绩 (25 分)

    对于在中国大学MOOC(http://www.icourse163.org/ )学习“数据结构”课程的学生,想要获得一张合格证书,必须首先获得不少于200分的在线编程作业分,然后总评获得不少于60分( ...

  10. P1396 营救[最短路+二分]

    题目描述 “咚咚咚……”“查水表!”原来是查水表来了,现在哪里找这么热心上门的查表员啊!小明感动的热泪盈眶,开起了门…… 妈妈下班回家,街坊邻居说小明被一群陌生人强行押上了警车!妈妈丰富的经验告诉她小 ...