MongoDB的常用操作以及python連接MongoDB

一,MongoDB的啟動

mongod --dbpath=..\data\db
mongodb

注意同時開兩個窗口,不要關!

在這里插入圖片描述
在這里插入圖片描述

二, MongoDB的簡單使用

簡單介紹一下mongoDB中一些操作

show dbs: 顯示所有數據庫
show databases: 顯示所有數據庫
use xxxx: 使用指定數據庫/創建數據庫(新庫中插入數據才可以顯示新庫)
db: 當前正在使用的數據庫
db.dropDatabase(): 刪除數據庫 當前的
show collections: 顯示當前數據庫中所有的集合(表)

三, MongoDB的增刪改查

1. mongodb中常見的數據類型:

Object ID: 主鍵ID【"_id" : ObjectId("655e0fbb6b39977605602770")】
String: 字符串
Boolean: 布爾值  
Integer: 數字
Doube: 小數
Arrays: 數組,[1,2,3]
Null : 空值 
Timestamp: 時間戳
Date: 時間日期

2. mongodb插入數據/文檔

#collection_name集合/表不存在則會新建
db.collection_name.insert({字段:值,字段:值})

示例:

db.c1.insert({name:"bobo", age:18, hobby:['eat', 'sleep']})
db.users.insertOne({name: "John", age: 30, email: "john@example.com"})
db.users.insertOne({name: "John", age: 30})

插入多條數據:

#c1是表名/集合名
db.getCollection('c1').insertMany([{"name":"bobo",},{"address":"河北"},]
);db.c1.insertMany([{name: "Alice", age: 25, email: "alice@example.com"},{name: "Bob", age: 35, email: "bob@example.com"}
])
  • 注意, 如果集合不存在. 則會自動創建集合

  • 插入數據后可以查詢所有數據查看是否插入成功:

db.stu.find()

3. mongodb修改數據

3.1 update更新
#d1是表名
db.d1.update({查詢條件}, {待修改內容}, {multi: 是否多條數據修改})
multi:true表示修改滿足條件所有的內容,否則只修改滿足條件的第一條內容,multi不寫默認為false

示例:

db.d1.update({name:"bobo"}, {$set:{title:"alex", hobby:['抽煙', '喝酒', '燙頭']}}, {multi:true});
db.c1.update({name:"bobo"}, {$set:{title:"alex", hobby:['抽煙', '喝酒', '燙頭']}}, {multi:true});
db.users.updateOne({name: "John"}, {$set: {age: 31}})
db.users.updateMany({age: {$lt: 30}}, {$inc: {age: 1}})

4.mongodb刪除數據

4.1 remove()
db.collection_name.remove({條件}, {justOne:true|false})
db.collection_name.remove() 刪除所有記錄
db.collection_name.drop()  刪除collection/表

示例:

db.nor_col.remove({name:"jay"}, {justOne:true})
4.2 deleteOne()
db.collection_name.deleteOne({條件})

示例:

db.nor_col.deleteOne({name:"jay"})
db.users.deleteOne({name: "Alice"})
4.3 deleteMany()
db.collection_name.deleteMany({條件})

示例:

db.nor_col.deleteMany({name:"jay"})
db.users.deleteMany({age: {$gte: 40}})

5. mongodb查詢數據

準備數據:

db.stu.insert([{name: "朱元璋", age:800, address:'安徽省鳳陽', score: 160},{name: "朱棣", age:750, address:'江蘇省南京市', score: 120},{name: "朱高熾", age:700, address:'北京紫禁城', score: 90},{name: "李嘉誠", age:38, address:'香港xxx街道', score: 70},{name: "麻花藤", age:28, address:'廣東省xxx市', score: 80},{name: "大老王", age:33, address:'火星第一衛星', score: -60},{name: "咩咩", age:33, address:'開普勒225旁邊的黑洞', score: -160}
])
5.1 普通查詢
db.c1.find() 查詢所有
db.c1.find({"字段":"固定值"})  查詢滿足條件的所有數據
db.c1.findOne({條件})  查詢滿足條件的第一條數據
db.getCollection('c1').find({"字段1":"固定值1","字段2":"固定值2"})
db.users.find({name: "John"})
db.users.findOne({age: {$gt: 30}})
條件查詢:

使用邏輯與(AND)條件:

db.users.find({age: 30, city: "New York"})

使用邏輯或(OR)條件:

   db.users.find({$or: [{age: 25}, {city: "London"}]})

使用比較操作符進行范圍查詢

db.users.find({age: {$gt: 30, $lt: 40}})
5.2 比較運算
等于: 默認是等于判斷, $eq
小于:$lt (less than)
小于等于:$lte (less than equal)
大于:$gt (greater than)
大于等于:$gte
不等于:$ne
db.stu.find({age:28})  查詢年齡是28歲的學生信息
db.stu.find({age: {$eq: 28}})  查詢年齡是28歲的學生信息
db.stu.find({age: {$gt: 30}})   查詢年齡大于30歲的學生
db.stu.find({age: {$lt: 30}})   查詢年齡小于30歲的學生
db.stu.find({age: {$gte: 38}})  查詢年齡大于等于30歲的學生
db.stu.find({age: {$lte: 38}})  查詢年齡小于等于30歲的學生
db.stu.find({age: {$ne: 38}})   查詢年齡不等于38的學生
不用加“”
5.3 邏輯運算符

and
$and: [條件1, 條件2, 條件3…]

查詢年齡等于33, 并且, 名字是"大老王"的學生信息
db.stu.find({$and:[{age: {$eq:33}}, {name:'大老王'}]})

or
$or: [條件1, 條件2, 條件3]

查詢名字叫"李嘉誠"的, 或者, 年齡超過100歲的人
db.stu.find({$or: [{name: '李嘉誠'}, {age: {$gt: 100}}]})

nor

$nor: [條件1, 條件2, 條件3]

查詢年齡不小于38歲的人, 名字還不能是朱元璋. 
db.stu.find({$nor: [{age: {$lt: 38}}, {name: "朱元璋"}]})
5.4 范圍運算符

? 使用$in, $nin判斷數據是否在某個數組內

db.stu.find({age: {$in:[28, 38]}})   年齡是28或者38的人
5.5 正則表達式

? 使用$regex進行正則表達式匹配

db.stu.find({address: {$regex:'^北京'}})  查詢地址是北京的人的信息
db.stu.find({address: /^北京/})  效果一樣
db.users.find({name: /^J/})//類似js語法
5.6 skip和limit
db.stu.find().skip(3).limit(3)	

跳過3個. 提取3個. 類似limit 3, 3 可以用來做分頁

5.7 排序

sort({字段:1, 字段:-1})

1表示升序
-1表示降序

對查詢結果排序, 先按照age升序排列, 相同項再按照score降序排列
db.stu.find().sort({age:1, score: -1})  
5.8 統計數量

count(條件) 查詢數量

db.stu.count({age:33})

四,pymongo的使用

python處理mongodb首選就是pymongo. 首先, 安裝一下這個模塊

pip install pymongo

建立連接

import pymongoconn = pymongo.MongoClient(host='localhost', port=27017)
print(conn)
# 切換數據庫
py = conn['test']# 登錄該數據庫(需要的話)
# #py.authenticate("python_admin", '123456')
# 簡單來個查詢
# 查詢所有數據
result = py["stu"].find()
for r in result:print(r)
print(type(result))

在這里插入圖片描述

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/161300.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/161300.shtml
英文地址,請注明出處:http://en.pswp.cn/news/161300.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

Linux 與大型機 z/OS

大型機 國際商業機器公司(International Business Machine Corporation),簡稱為 IBM,實際上是當今大型機的代名詞。作為大型企業技術解決方案提供商,IBM 在其漫長的生命周期中生產了各種產品。 他們的前身是計算、制表…

時序預測 | MATLAB實現基于BiLSTM-AdaBoost雙向長短期記憶網絡結合AdaBoost時間序列預測

時序預測 | MATLAB實現基于BiLSTM-AdaBoost雙向長短期記憶網絡結合AdaBoost時間序列預測 目錄 時序預測 | MATLAB實現基于BiLSTM-AdaBoost雙向長短期記憶網絡結合AdaBoost時間序列預測預測效果基本介紹模型描述程序設計參考資料 預測效果 基本介紹 1.Matlab實現BiLSTM-Adaboost…

【精選】Ajax技術知識點合集

Ajax技術詳解 Ajax簡介 Ajax 即“Asynchronous Javascript And XML”(異步 JavaScript 和 XML),是指一種創建 交互式、快速動態應用的網頁開發技術,無需重新加載整個網頁的情況下,能夠更新頁面局 部數據的技術。通過在…

Scala如何寫一個通用的游戲數據爬蟲程序

以前想要獲取一些網站數據的時候,都是通過人工手動復制粘貼,這樣的效率及其低下。數據少無所謂,如果需要采集大量數據,手動就顯得乏力了。半夜睡不著,爬起來寫一段有關游戲商品數據的爬蟲通用模板,希望能幫…

專業pdf編輯工具PDF Expert mac中文版特點介紹

PDF Expert mac是一款專業的PDF編輯和閱讀工具。它可以幫助用戶在Mac、iPad和iPhone等設備上查看、注釋、編輯、填寫和簽署PDF文檔。 PDF Expert mac軟件特點 PDF編輯:PDF Expert提供了豐富的PDF編輯功能,包括添加、刪除、移動、旋轉、縮放、裁剪等操作…

基于順序表實現通訊錄

1.功能實現 功能要求 1)至少能夠存儲100個人的通訊信息 2)能夠保存用戶信息:名字、性別、年齡、電話、地址等 3)增加聯系人信息 4)刪除指定聯系人 5)查找制定聯系人 6)修改指定聯系人 7&#xf…

Hutool HttpRequest 首次請求正常 第二次被系統攔截

Hutool HttpRequest 首次請求正常 第二次被系統攔截 功能描述異常現象錯誤代碼 異常排查問題跟蹤問題總結處理方案最終修改后的代碼 功能描述 需要請求第三方某個接口,獲取接口中的數據。 異常現象 使用main 方法 通過Hutool 工具類發出請求,獲取數據…

網絡運維與網絡安全 學習筆記2023.11.22

網絡運維與網絡安全 學習筆記 第二十三天 今日目標 VLAN間通信之交換機、VLAN間通信綜合案例、浮動路由 VRRP原理與配置、VRRP鏈路跟蹤、VRRP安全認證 VLAN間通信之交換機 單臂路由的缺陷 在內網的VLAN數量增多時,單臂鏈路容易成為網絡瓶頸 三層交換機 具備…

react中模塊化樣式中:global的作用

在react中如果是通過import styles from ./index.less這種方式模塊化引入樣式的話,那么編譯后的less文件里的樣式名都會自動添加后綴。而:global的作用就是不讓類名添加后綴

利用 Apache Ranger 管理 Amazon EMR 中的數據權限

需求背景簡介 系統安全通常包括兩個核心主題:身份驗證和授權。一個解決“用戶是誰”的問題,另一個解決“用戶允許執行什么操作”的問題。在大數據領域,Apache Ranger 是最受歡迎的授權選擇之一,它支持所有主流大數據組件&#xff…

微機原理_1

一、單項選擇題(本大題共15小題,每小題3分,共45分。在每小題給出的四個備選項中,選出一個正確的答案,請將選定的答案填涂在答題紙的相應位置上。) 1,下列8086CPU標志寄存器的標志位中,不屬于狀態標志位的是() A. OF B. IF C. AF D. PF 8086微處理器可尋址訪問的最大…

面試中vue-router的一些知識點

Vue Router Vue Router使用舉例說明 vue-router 中 route和router的區別與聯系 route和router的區別與聯系 vue3 路由使用vue2 路由與vue3 路由的區別與聯系 Vue Router Vue Router是Vue.js官方的路由管理器,用于實現單頁面應用中的路由功能。它允許我們在Vue應用程…

萬界星空科技SMT行業生產管理MES系統解決方案

一、SMT行業特點: SMT(Surface Mounted Technology)作為電子組裝行業里首先的技術和工藝,選擇合適的MES解決方案來保障SMT生產的成功至關重要。 電子行業涉及的范圍非常廣,包含了汽車、電腦、電視、手機等產品上&…

HCIA-Datacom跟官方路線學習

通過兩次更換策略。最后找到最終的學習方案,華為ICT官網有對這個路線的學習,hcia基礎有這個學習路線,hcip也有目錄路線。所以,最后制定學習路線,是根據這個認證的路線進行學習了: 官網課程:課程…

scala 實現表達式解析

表達式解析 import org.junit.Testimport scala.collection.mutableclass ExprTestCase {private val orderSource "source_1"private val saleChannel "saleChannel"val datas new mutable.HashMap[String, String]();// p1, source1, sale1, source…

everything的高效使用方法

目錄 前言1 everything的簡單介紹2 常用搜索3 語法搜索4 正則表達式搜索5 服務器功能 前言 本文介紹everything軟件的高效使用方法,everything是一款在系統中快速搜索文件的軟件,能夠幫助人們快速定位需要查找的文件。首先介紹everything軟件的作用和使…

掌握 AI 和 NLP:深入研究 Python — 情感分析、NER 等

一、說明 我們見證了 BERT 等預訓練模型在情感分析方面的強大功能,使我們能夠破譯隱藏在文本數據中的情感。通過 SpaCy,我們探索了命名實體識別的迷人世界,揭開了隱藏在非結構化文本中的秘密。 二、問題陳述 命名實體識別(NER)是自然語言處理中的一項關鍵…

數字化時代的政務服務:構建便捷高效的線上政務大廳

引言: 隨著數字化時代的來臨,如何通過線上政務大廳搭建一個便捷高效的服務平臺,以更好地滿足公眾需求值得探究。線上政務大廳是政務服務的新方式,但搭建線上政務大廳并不是一件容易的事情,需要精心的規劃和設計。 一…

【藍橋杯選拔賽真題25】C++兩個數比大小 第十三屆藍橋杯青少年創意編程大賽C++編程選拔賽真題解析

目錄 C/C++兩個數比大小 一、題目要求 1、編程實現 2、輸入輸出 二、算法分析

Linux文件I/O:基本概念

Linux是一個開源的操作系統,它提供了一套豐富的文件I/O(輸入/輸出)接口,讓用戶和程序可以方便地對文件進行讀寫操作。文件I/O是操作系統中最基本也最重要的功能之一,它涉及到文件的打開、關閉、讀取、寫入、定位、鎖定…