mongodb 輸出數組字段_MongoDb文檔操作、索引操作

學習主題:MongoDb

學習目標:

  1. 掌握mongodb文檔的更新
  2. 掌握mongodb文檔的刪除
  3. 掌握mongodb文檔的查找
  4. 掌握mongodb文檔的條件操作符
  5. 掌握mongodb中的索引操作
  6. Mongodb的更新方式
  7. Update()函數更新
  8. Save()函數更新

Mongodb的update更新?

Update用于更新已存在的文檔(只更新更新內容中數據,文檔數據易丟失)

語法格式:db.COLLECTION_NAME.update({查詢條件},{更新內容},{更新參數(可選)})

Mongodb的更新操作符有哪些 都是什么意思?

$set (指定一個鍵,并更新鍵值,若不存在則創建)

db.dev.update({title:'語文小組'},{$set:{title:'物理小組'}})

使用multi參數實現批量更新操作

db.dev.update({title:'dev'},{$set:{size:'500'}},{multi:true})

$inc(數值類型):可以對文檔的某個值為數值型(只能為滿足要求的數字)的鍵進行增減操作

$unset 刪除鍵

$push (數組類型的鍵)

db.dev.update({title:'dev'},{$push:{tags:'JAVA 大數據 AI'}})

$pop:(刪除數據元素)

db.dev.update({title:'abc'},{$pop:{tags:1}}) //1表示從尾刪

db.dev.update({title:'abc'},{$pop:{tags:-1}} //-1表示從頭刪

$pull 從數組中刪除滿足條件的元素

db.dev.update({title:'abc'},{$pull:{tags:'34'}})

$pullAll 從數據中刪除滿足條件的多個元素

$rename 對鍵重新命名

Mongodb的save()更新?

Save()方法通過傳入的文檔來替換已有文檔

語法格式:save({文檔})

例如:修改title并刪除tag數組

db.dev.save({"_id" : ObjectId("5dbd292c503ed06c738dc15b"),title:'def'})

Mongodb刪除文檔的三種方式?

根據主鍵刪除文檔

db.dev.remove({"_id" : ObjectId("5dbd292c503ed06c738dc15b")})

如果使用的條件在集合中可以匹配多條數據,那么remove函數會刪除所以滿足條件的數據

db.dev.remove({title:"dev"},1)

Db.repairDatabase()回收磁盤空間(需要管理員賬戶)

DeleteOne()函數刪除一條文檔

DeleteMany()函數刪除多條文檔

刪除集合中的所有文檔

Remove({})

deleteMany({})

Mongodb如何實對文檔的查詢,請舉例說明?

使用find()函數查詢文檔

Find({查詢條件},{指定投影的鍵})

使用pretty()函數格式化顯示

FindOne({查詢條件},{指定投影的鍵}) 自帶格式化顯示

db.dev.find({title:/a/}) //查詢標題含有a內容

db.dev.find({title:/^a/}) //查詢以a開頭

db.dev.find({title:/a$/})//查詢以a結尾

Mongodb中的投影操作指的是?

投影鍵顯示該列查詢的結果

語法格式為:find({查詢條件},{投影鍵名:1(顯示該列)|0(不顯示該列)})

db.dev.find({title:"dev"},{title:1})

條件運算符有哪些 分別什么意思?

$gt 大于

db.dev.find({size:{$gt:300}})

$lt 小于

db.dev.find({size:{$lt:300}})

$gte 大于等于

$lte 小于等于

$eq 等于

$ne 不等于

$and 并且

db.dev.find({$and:[{size:{$gt:100}},{size:{$lt:400}}]})

$or 或者

db.dev.find({$or:[{title:{$eq:'test2'}},{size:{$gt:300}}]})

$type 類型檢索數據

db.dev.find({title:{$type:'number'}})

and和or如何聯合使用?

db.dev.find({$or:[{$and:[{title:{$eq:'test5'}},{size:500}]},{size:{$lt:400}}]})

f6d310cc26aa5a6f34315b3b46ffc614.png

每頁顯示5條查看第5頁的數據如何實現?

db.dev.find({},{title:1,_id:0}).skip(5).limit(5)

如何實現排序,兩個條件如何排序 如年齡一致按照分數排序?

db.dev.find({size:{$type:'number'}},{title:1,size:1,_id:0}).sort({size:1})

如何創建索引?

db.dec.createIndex({title:1},{background:true})

如何查看索引?

db.dev.getIndexes()

db.dev.getIndexSpecs()

db.dev.getIndexKeys()

刪除索引有幾種方式,分別舉例說明?

刪除全部索引

db.dev.dropIndexes()

刪除指定索引

db.dev.dropIndex(‘title_1’)

索引類型有哪些,有何作用?

單字段索引 在索引中只包含一個鍵,查詢時,可加速對該字段的各種查詢請求

交叉索引 一個集合的多個字段分別建立索引,在查詢的時候通過多個字段作為查詢條件。

復合索引 針對多個字段聯合創建索引,滿足多字段組合查詢,也滿足匹配符合索引前綴的查詢

多key索引 多key索引會為數組的每個元素建立一條索引

文本索引

部分索引

db.dev.createIndex({size:1},{partialFilterExpression:{size:{$gt:300}}})

使用索引需要注意什么?

創建索引需要在管理員admin數據庫下進行操作,不能有重復字段,出現重復字段則不能創建就會報錯。

索引額外屬性

db.dev.createIndex({title:1},{background:true,unique:true})

索引限制指的是?

額外開銷:每個索引占據一定的存儲空間,在進行插入,更新和刪除操作時也需要對索引進行操作。所以,如果你很少對集合進行讀取操作,建議不使用索引

內存(RAM)使用 由于索引是存儲在內存(RAM)中,你應該確保該索引的大小不超過內存的限制。

如果索引的大小大于內存的限制,MongoDB會刪除一些索引,這將導致性能下降

查詢限制

索引不能被以下的查詢使用:

正則表達式及非操作符,如 $nin, $not, 等。

算術運算符,如 $mod, 等。

$where 子句

所以,檢測你的語句是否使用索引是一個好的習慣,可以用explain來查看。

索引鍵限制

插入文檔超過索引鍵限制

如果文檔的索引字段值超過了索引鍵的限制,MongoDB不會將任何文檔轉換成索引的集合。與mongorestore和mongoimport工具類似。

最大范圍

集合中索引不能超過64個

索引名的長度不能超過128個字符

一個復合索引最多可以有31個字段

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

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

相關文章

表情符號mysql utf8mb4_mysql utf8mb4與emoji表情

一 什么是Emojiemoji就是表情符號;詞義來自日語(えもじ,e-moji,moji在日語中的含義是字符)表情符號現已普遍應用于手機短信和網絡聊天軟件。emoji表情符號,在外國的手機短信里面已經是很流行使用的一種表情。手機上如何使用emoji&…

html自適應_web前端入門到實戰:HTML 文檔流,設置元素浮動,導致父元素高度無法自適應的解決方法...

元素浮動定義float 屬性定義元素在哪個方向浮動。以往這個屬性總應用于圖像,使文本圍繞在圖像周圍,不過在 CSS 中,任何元素都可以浮動。浮動元素會生成一個塊級框,而不論它本身是何種元素。如果浮動非替換元素,則要指定…

idea 遠程調試_我的天!你竟然不會用IDEA遠程調試Tomcat...

# 準備工作明確的遠程服務器的IP地址,某些我是:192.168.92.128關掉服務器防火墻:service iptables stop# 本地遠程服務器配置添加遠程服務器,如下圖復制遠程服務器自動生成的JVM參數,等下有用,如下圖&#…

mysql異步查詢 java_基于 mysql 異步驅動的非阻塞 Mybatis

雖然 spring5 也推出了 WebFlux 這一套異步技術棧,這種極大提升吞吐的玩法在 node 里玩的風生水起,但 java 世界里異步依舊不是主流,Vertx 倒是做了不少對異步的支持,但是其對于數據訪問層的封裝依舊還是挺精簡的,傳統…

跨域獲取后臺數據undefined_同源策略amp;JSONP跨域

同源策略&JSONP跨域同源策略 對于同源的定義,MDN給出了這樣的解釋:如果兩個頁面的協議,端口(如果有指定)和主機都相同,則兩個頁面具有相同的源。如何確定兩個頁面是否同源,只要比較兩個頁面…

python 除數不能為零的報錯有哪些_【社區精選40】Python錯誤處理及代碼調試方法(文末贈書中獎名單)...

本文整理自愛數據學院中的問答更多精彩問答,進入下方社區網站查看http://www.lovedata.cn/invitation社區精選話題 第40期Python錯誤處理及代碼調試方法一次寫完代碼程序并能夠正常運行的概率很小很小,總會有各種各樣的錯誤bug需要處理。有的報錯簡單&a…

利用python批量查詢企業信息_python實現批量獲取指定文件夾下的所有文件的廠商信息...

本文實例講述了python實現批量獲取指定文件夾下的所有文件的廠商信息的方法。分享給大家供大家參考。具體如下:功能代碼如下:import os, string, shutil,reimport pefileimport codecs, sysimport wximport struct#輸出中打印Unicode字符#sys.stdout co…

mac mysql prefpane_【MySQL數據庫開發之一】Mac下配置安裝數據庫-MySQL

本站文章均為那么從今天開始陸續會更新數據庫和Hibernate框架的博文,也是Himi學習的歷程記錄,希望大家能共同討論和研究;OK,本篇簡單介紹安裝吧,首先到MySQL官方網站:如上圖:點擊DOWNLOAD &…

系統新模塊增加需要哪些步驟_想要吸引人流,兒童樂園需要增加哪些新設備呢...

兒童樂園是現今最火爆的一個投資項目,因為它的主要消費群體是孩子,而現在的家長們對孩子們的寵愛,基本都會答應讓孩子們去兒童樂園里面玩耍。但是兒童樂園的投資經營者也會遇見一些小問題,例如兒童樂園添加設備要怎么選擇呢&#…

php mysql 圖像_php-向/從MySQL數據庫插入/查看圖像

我在DB中插入圖像時遇到問題.該表具有以下結構:> id-> INT(3)->自動增量>名稱-> VARCHAR(30)> extension-> VARCHAR(10)[可能太短]> img-> MEDIUMBLOB插入圖像的PHP代碼為:if($_FILES[file][error]0){$result is_uploaded_f…

照片打印預覽正常打印空白_小米發布口袋照片打印機,可無墨打印3寸背膠照片...

9月11日消息,小米推出一款小米口袋照片打印機。與之前的小米米家照片打印機相比,這款新品更加小巧便攜,體積接近充電寶大小,凈重僅181g,便于隨身攜帶。小米口袋照片打印機采用ZINK無墨技術打印,即使用嵌入紙…

c中獲取python控制臺輸出_在真實的tim中用C捕獲控制臺python打印

我正在嘗試從C創建一個python進程,并從python腳本獲取打印結果。在這就是我的C代碼:namespace ConsoleApp1{public class CreateProcess{public String PythonPath { get; set; }public String FilePath { get; set; }public String Arguments { get; se…

python三大編程語言_程序員最需要的三種編程語言

隨著科學技術的進步和新技術的進步,編程語言的種類越來越多,變化是程序員需要跟蹤和學習許多語言 然而,有太多的語言無法一一掌握 在目前的形式中,最需要掌握的三種編程語言是 現在判斷還不晚 坦白說,找工作很容易 它可…

MySQL優化調優有沒有做過_MySQL 調優/優化的 100 個建議

MySQL是一個強大的開源數據庫。隨著MySQL上的應用越來越多,MySQL逐漸遇到了瓶頸。這里提供 101 條優化 MySQL 的建議。有些技巧適合特定的安裝環境,但是思路是相通的。我已經將它們分成了幾類以幫助你理解。MySQL監控MySQL服務器硬件和OS(操作系統)調優&…

python語句print(type([1、2、3、4))_Python 學習第一天

一、學習內容1.print:表示輸出print (“hello world”)單行注釋:#多行注釋:“““ ”””2.運算符注意:才表示等于,!表示不等于3.位運算符~按位取反:~104.變量和賦值teacher“老馬的…

mysql核心參數_MySQL技術體系之核心參數

本文主要基于MySQL 5.7版本的數據庫環境,總結my.cnf文件中核心參數的配置使用,讓更多的人對MySQL技術體系有更全面、更專業的深度了解。一、客戶端核心參數1、port端口號,默認33062、socketSocket文件地址,默認以.sock為文件名稱后…

svd降維 python案例_SVD(奇異值分解)Python實現

注: 在《SVD(異值分解)小結 》中分享了SVD原理,但其中只是利用了numpy.linalg.svd函數應用了它,并沒有提到如何自己編寫代碼實現它,在這里,我再分享一下如何自已寫一個SVD函數。但是這里會利用到SVD的原理,…

salt 啟動mysql_saltsack自動化配置day03:服務部署mysql部署

一、MySQL集群需求分享1、抽象:功能模塊把基礎的寫成通用服務部署也要抽象出來模塊redis內存有的多,有的少,可以config set在線更改redis 安裝、配置、啟動mysql 安裝、配置(my.cnf可以統一 目錄默認配置可以統一)master: server_id 1111slav…

jtag引腳定義_從逆向分析的角度學習硬件調試技巧JTAG,SSD和固件提取

我想從逆向的角度做了深入了解JTAG,JTAG是許多嵌入式CPU使用的硬件級別調試機制,我希望通過這篇文章從逆向工程師的角度解釋如何使用JTAG,并在此過程中提供一些實際示例。0x01 研究目標通過這篇文章,我希望做到以下幾點&#xff1…

python virtualenv conda_在vscode中啟動conda虛擬環境的思路詳解

問題:cudatoolkit cudnn 通過conda 虛擬環境安裝,先前已經使用virtualenv安裝tf,需要在conda虛擬環境中啟動外部python虛擬環境思路:conda prompt即將 [虛擬環境位置] 以參數形式傳入 [activate.bat]VSOCDE中的設置添加以下語句{&…