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.pswp.cn/news/456473.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/456473.shtml
英文地址,請注明出處:http://en.pswp.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…