Python操作MongoDB

一 安装 pymongo

pip  install  pymongo==3.4
​
导入 MongoClient
from pymongo import MongoClient

 

二 连接MongoDB数据库

MongoDB端口号:27017
连接MongoDB我们需要使用PyMongo库里面的MongoClient,一般来说传入MongoDB的IP及端口即可,第一个参数为地址host,第二个参数为端口port,端口如果不传默认是27017。
conn= MongoClient("localhost")

三 选择数据库

连接数据库db = conn.数据库名
连接集合collection = db['表名']orcollection = db.表名
查看表db.collection_names()

四 INSERT 数据的插入

(1) 插入一条数据

db.collection.insert({'name':'大坏蛋','age':23})

插入成功:返回ID

(2) 插入多条

db.collection.insert([{'name':'大坏蛋','age':23},{'name':'猪队友','age':30}])

插入成功:返回ID的列表

[ObjectId('5a1642c4b96166349c2963eb'), ObjectId('5a1642c4b96166349c2963ec')]

(3) 3.2以上的插入函数

db.collection.insert_one() 插入一条数据

db.collection.insert_many() 插入多条数据,插入成功:返回obj

(4) 3.2以上获取插入的id

db.collection.insert_one()返回的就是id

res = db.collection.insert_many() #返回的是对象

可以通过res.inserted_ids获取插入多条的ID

五 find 查询

(1) find 查询

res = db.user.find()  #返回的是游标对象 使用next() 方法 进行取值
print(res.next());
print(list(res));  #显示全部
​
#遍历
for obj in res:print(obj)

(2) 查询一条

res = db.user.find_one(条件) #返回一条记录

(3) 条件查询

res = db.user.find({"name":"张三"})
for obj in res:print(obj)

(4)id查询

from bson.objectid import ObjectId* #用于ID查询
data = db.user.find({"_id":ObjectId("59a2d304b961661b209f8da1")})

(5)模糊查询

MongoDB查询条件可以使用正则表达式,从而实现模糊查询的功能。模糊查询可以使用$regex操作符或直接使 用正则表达式对象。

  1. $regex

  2. re.compile()

    import re 使用 re.compile()

    MySQLMongoDB
    select * from student where name like ’%joe%’db.student.find({name:{"$regex":"坏"}})
    select * from student where name regexp ’joe’db.student.find({"name":re.compile("坏"))
    import re
    data = db.user.find({"name":{"$regex":"五"}})
    data = db.user.find({"name":re.compile("五")})

注意 当匹配类型为 不是字符串的类型的时候 匹配不出来 data = db.user.find({"age":re.compile("30")}) data = db.user.find({"age":{"$regex":"3"}}) ret = collection.find({'name':re.compile(r'^郭')})

 

(6) sort 排序

#sort 排序
data = db.user.find().sort("age",1)  #按照年龄升序
data = db.user.find().sort("age",-1)  #按照年龄降序
for i in data:print(i)
​

(7) limit 取值

#limit 取值
print(next(db.user.find().sort("age",-1).limit(1)))  #取出年龄最大的一条数据

(8) skip 跳过

#skip   跳过最大值 取第二大值
print(next(db.user.find().sort("age",-1).skip(1).limit(1)))  #取出年龄最大的一条数据

 

六 update 修改

(1) db.collection.update(条件,更改)

data = db.user.update({"name":"潘金莲"},{"$inc":{"age":2}})  #累加修改
data = db.user.update({"name":"潘金莲"},{"$set":{"age":2}})  #直接修改
​
更改成功 返回 数据:{'n': 1, 'nModified': 1, 'ok': 1.0, 'updatedExisting': True}

(2) update_one() 修改一条数据

data = db.user.update_one({"name":"王五"},{"$set":{"age":20}})

(3) update_many() 修改多条数据

data = db.user.update_one({"name":"王五"},{"$set":{"age":20}})  #修改多条

(4) update_one 和 update_many 返回匹配条数和修改的条数

result.matched_count        返回匹配条数
result.modified_count       返回修改的条数

七 remove 删除

(1) remove 匹配到的全部删除

db.collection.remove({条件})

(2) 删除全部数据

db.collection.remove()

(3) 依然存在两个新的推荐方法

delete_one()和delete_many()方法,示例如下:
​
delete_one()即删除第一条符合条件的数据
collection.delete_one({“name”:“ Kevin”})
​
delete_many()即删除所有符合条件的数据,返回结果是DeleteResult类型
result = collection.delete_many({“age”: {'$lt':25}})
​
可以调用deleted_count属性获取删除的数据条数。
result.deleted_count

八 关闭数据库链接

conn.close()

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/456473.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

各种插件

上下滚动抽奖效果, 移动端省级联动, 时间联动 , pc端省级联动 vue 支持各种方式上传 一个不太完善的拖拽排序 react 拖拽交换插件 各种小插件 压缩图片移动端 h5上传 h5分片上传 包括服务器 slideSuper 各种滑动效果 wow.js 转载于:https://www.cnblogs.com/dhsz/p/6377956.h…

MailBee.NET Objects发送电子邮件(SMTP)教程六:创建并发送带有附件的邮件

2019独角兽企业重金招聘Python工程师标准>>> MailBee.NET Objects是一款为创建、发送、接收以及处理电子邮件而设计的健壮、功能丰富的.NET控件。几行代码便可为应用程序添加E-Mail支持,简单高效。具备“必需”以及独特的功能,这些控件帮助开…

机器学习之凸优化原理推导及相关知识总结

文章目录目录1、了解凸集和仿射集的基本概念。2、知道几何体的向量表达。3、了解超平面和半空间的概念。4、了解分割超平面和支撑超平面的含义。5、知道jensen不等式。6、掌握知识:凸函数。7、掌握凸优化目录 1、了解凸集和仿射集的基本概念。 凸集:在…

jQuery BreakingNews 间歇滚动

BreakingNews 是一款基于jQuery的间歇滚动插件。它可以设置标题、标题颜色、标题背景颜色、链接颜色、字体大小、边框、宽度、自动滚动、间歇时间等等,同时它还好提供两种过度方式——淡入淡出(fade)和向上滑动(slide)…

机器学习之回归总结

目录1、了解线性回归2、了解似然函数3、了解交叉验证的原理4、梯度下降算法4.1、批量梯度下降算法(Batch Gradient Descent,简称BGD):4.2、随机梯度下降算法(SGD):4.3、折中: 5、了解…

html中的url、href、src的区别

url不是属性,src和href是属性,src用于替换当前元素,href用于在当前文档和引用资源之间确立联系,也就是说src引用的路径是img自己的路径,href引用的路径是要跳转到的地方。 URL:Uniform Resource Locators&…

SSIS 包部署错误 0xC0010014

SSIS 包部署错误 0xC0010014 Reinhard 在部署 SSIS 包时,提示如下错误。 由于错误 0xC0010014“发生了一个或多个错误。在此消息之前应有更为具体的错误消息,对这些错误进行详细说明。此消息用作遇到错误的函数的返回值。”,无法加载包。当 C…

Android性能优化-App后台优化

原文链接 Background Optimizations 前言 后台进程是内存和电池敏感的。一个隐式的broadcast可能会启动很多监听它的后台进程,即使这些进程可能做得工作不多。这可能丢设备性能和用户体验都有比较大的影响。 为了缓解这种问题,7.0(API 24&…

机器学习之决策树与随机森林

目录1、了解熵、条件熵、互信息的概念及公式1.1、熵1.2、条件熵1.3、信息增益/互信息 2、了解决策树2.1、了解决策树的概念和特点以及和熵的关系2.2、了解树生成的过程2.3、了解决策树三种算法的区别2.4、了解决策树的损失函数2.5、了解解决决策树过拟合的方法2.6、了解后剪枝的…

JSON(JavaScript Object Notation) 格式

JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式。 它使得人们很容易的进行阅读和编写。同时也方便了机器进行解析和生成。JSON采用完全独立于程序语言的文本格式,但是也使用了类C语言的习惯。 json是 JavaScript Object Notation 的首字母缩写&…

synchronized 的理解

第一种:package com.ucmed.zsyy.util;/*** Created by ucmed on 2017/2/8.*/public class DirtyRead {private String username "zjkj";private String password "123";public synchronized void setValue(String username, String password)…

机器学习之提升算法

1、知道提升、梯度提升是什么意思1.1、提升1.2、梯度提升1.3、了解提升算法的过程 2、残差与残差平方和(residual sum of squares)3、了解GBDT算法4、了解XGBoost算法5、了解Adaboost算法5.1、Adaboost算法的原理5.2、例子 6、偏差和方差 1、知道提升、梯…

Jsoup遍历ul li下的链接信息实例

2019独角兽企业重金招聘Python工程师标准>>> Document doc;try {String URL "www.baidu.com";doc Jsoup.connect(URL).get();Elements ElementsUl doc.getElementsByTag("ul");for (Element elementLi : ElementsUl) {Elements provinceEl …

两篇波兰地区重金属污染地区土壤微生物多样性的研究

环境微生物(包括方兴未艾的肠道微生物)在不同的系统中发挥着的生态作用逐渐被意识到,我们对环境微生物实际上仍旧知之甚少,其多样性问题仍旧是一个非常基础和重要的课题。这次读的两篇文章都是关于波兰地区重金属污染地区的土壤微…

jquery中的 $(function(){})

$(function(){})的区别:$(function(){}) 是 $(document).ready(function(){}) 的简写,用来在DOM加载完成之后执行一系列预先定义好的函数。 需要注意与(function(){})相比,(function(){})表示一个匿名函数。function(arg){...}定义了一个参数…

机器学习之支持向量机(SVM)总结

文章目录1、知道SVM相关的各种概念2、知道目标函数、损失函数、正则项的意义2.1、目标函数2.2、损失函数2.3、正则化(添加噪音避免过拟合)3、了解SVM算法原理4、知道SVM的目标函数5、知道SVM的损失函数以及公式6、知道SVM支持向量机的计算过程6.1、推导过…

在CentOS上搭建PHP服务器环境

您也可以使用一键自动部署环境的工具,请参见网友开发的这个工具 http://www.centos.bz/2013/08/ezhttp-tutorial/安装apache:yum install httpd httpd-devel 启动apache:/etc/init.d/httpd start此时输入服务器的IP地址,应该看到apache的服务页面&#x…

jQuery之滚动事件$(window).scroll(function()

<!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><title>滚动事件</title><script src"https://code.jquery.com/jquery-2.2.4.min.js"></script><style>img{position:fixe…

《疯狂Java讲义》(二十九)---- JDBC

JDBC编程步骤加载数据库驱动Class.forName(driverClass). 例如&#xff1a;Class.forName("oracle.jdbc.driver.OracleDriver"); 2. 通过DriverManager获取数据库连接。 DriverManager.getConnection(String url, String user, String pwd); 3. 通过Connection对象创…

机器学习之聚类算法的原理推导及相关知识总结

文章目录1、知道几个关于"差"的概念2、理解相似度度量的各种方法和相互关系2.1、欧氏距离2.2、jaccard相似系数2.3、余弦相似度2.4、Pearson相似系数2.5、相对熵3、掌握掌握K-Means算法3.1、知道聚类的思想3.2、K-Means算法原理3.3、知道K-Mediods聚类3.4、如何选取K…