Mongodb基本命令總結

来源:https://www.cnblogs.com/thomson-fred/archive/2018/10/10/9764329.html
-Advertisement-
Play Games

Mongodb是近年來很火的一個非關係型資料庫,不少企業都用來做部分業務模塊數據的擴展存儲,這裡我 總結了一些Mongodb的基本使用,作為分享,也方便自己以後需要的時候查詢使用。 1. 創建資料庫 use databaseName 選擇一個資料庫,如果資料庫不存在就自動創建一個資料庫 只有向資料庫 ...


Mongodb是近年來很火的一個非關係型資料庫,不少企業都用來做部分業務模塊數據的擴展存儲,這裡我

總結了一些Mongodb的基本使用,作為分享,也方便自己以後需要的時候查詢使用。

1. 創建資料庫

use  databaseName

選擇一個資料庫,如果資料庫不存在就自動創建一個資料庫

只有向資料庫中插入數據時,資料庫才會被真實創建出來,而當資料庫中沒有數據時,use不會馬上創建資料庫,

這個特點有效減少了存儲空間的占用。

 

2. 查看資料庫

show dbs

mongodb中預設有以下幾個資料庫:

admin  存放用戶和許可權

local   存放本地化數據(分散式部署)

config  存儲分片信息

 

3. 刪除資料庫

 db.dropDatabase()  

註意:mongodb中函數都用小駝峰命名

 

4. 創建集合

db.createCollection(collection_name)

 

5. 插入數據

db.collection_name.insert({數據內容})

 當向一個集合中插入數據的時候,如果這個集合不存在則自動創建

 最近插入的數據文檔在資料庫的最上方顯示

 插入的數據域預設是字元串,如果在插入欄位中不用雙引號,資料庫後臺就會自動加上

 

插入多條文檔

db.collection_name.insert([{ }, { }, { }])

 

6. save插入文檔方式

db.collection_name.save()

save與insert的區別

如果加_id域,如果這個_id域的值已經存在,則會替換原有的文檔,而insert是不允許插入相同

的_id的

 

7. 查看集合

show collections 或者 show tables

註意集合的命名規則:

1) 合法的utf-8字元串

2) 不能有’\0’

3) 不能以system開頭,因為是系統的保留首碼

4)不能和關鍵字重覆

 

8. 刪除集合

db.collection_name.drop()

 

9. 集合重命名

db.collection_name.renameCollection(‘new_name’)

 

10. 查詢文檔(重點)

db.collection_name.find(query,field)

相當於 mysql中的 select * 

query 篩選條件,相當於MySQL的where子句

field  選擇要展示的域

返回值: 返回查找到的文檔

 需要理解的點:

query 和 field都是可選參數,不寫參數就預設顯示所有文檔,也只有查找時不用傳入query,一般其他操作都需要傳入query進行篩選

query  以鍵值對的形式給出查找條件

field   以鍵值對的形式給出要展示或者不展示的 域為鍵,值時0時不顯示該域, 值是1時顯示該域,這是mongodb特有的特性

例如:為了避免看到一大串的id值,在查找時_id 域經常會被設置為0

 db.class.find( {},{_id :0} )  除了_id 域,其他域都正常顯示

註意:

1. 在寫第二個參數時必須要寫第一個參數

2. 第二個參數只能同時限制多個域的0/1值,不能多個域都設置不同,否則其他沒設置的域會混亂,_id域的設置除外(即無論_id域怎麼設

置都不影響其他域的設置)

 

好了,重點中的重點來了

query的使用

因為鍵值對無法進行像MySQL中where子句那樣強大的篩選作用(鍵值對篩選相當於MySQL中where子句篩選的等於條件),mongodb引入了操作符

 操作符的表達形式是以鍵值對形式出現的。下麵介紹幾種常用的操作符,更多的操作符可以查看Mongodb的官方文檔。

 1)比較操作符

$eq  等於操作符

例如:db.class.find( {age: {$eq : 18} },{_id :0} )

 $gt   大於操作符 

$lt   大於操作符

$ lte  小於等於操作符

$gte  大於等於操作符

$ne   不等於操作符

 細節:mongodb中多種類型的數據都是可以比較的,例如數值類型,字元串類型

 

2)範圍操作符

$ in [ ]   在範圍集合內的文檔被匹配 (連續的範圍)

例如:db.class.find( {age: {$in : [18, 23]} },{_id :0} )

如果是用 $ and只能這樣表達: $and:[{age:{$gt:.. } }, {age:{$lt:.. } } ]

用gt和lt一起用來把範圍括起來

 $ nin[ ]  不在範圍集合內的文檔被匹配

 

3)邏輯操作符

1. $ and: [ ]   和運算符

query 中如果多個條件用逗號隔開,就為and關係(類似mysql中的where子句中的and)

例如:db.class.find( {$and: [{age: {$ gt 17}, {age: {$ lt 22} ],{_id :0} )  查詢年齡大於17,小於22的同學

 

用$ and 可以改寫為 db.class.find({$ and : [{ age: 17} ,{sex: ‘M’ } ] },{_id :0} )

[ ]內一定要分成連個字典來表示兩個條件,否則(只用一個字典來包含兩個條件並用逗號分隔)在語法上就只表示一個條件,只不過這個條件裡面包含兩個條件而已

一般平常使用多直接用逗號來分隔條件而不用 $and的操作符

 

2 .$ or  或運算符

語法表達上跟 $ and 一樣,表達的是或邏輯篩選

 

1. $not  取反運算符

db.class.find( {age: {$not {$ gt 17} } },{_id :0} )  匹配年齡小於等於17的文檔

註意: $not 一般添加在條件值的前面,對值進行取反

 

2. $ nor  既不也不運算符

not(A or B) --> not A and not B

db.class.find({$ nor : [{ age: 17} ,{sex: ‘M’ } ] },{_id :0} )

 註意:如果篩選匹配的文檔的域是其他文檔不具備的;即一個域有些文檔有值,有些文檔沒值,這種篩選是無法匹配的

 

11. findOne(query,field)

查找符合條件的第一條文檔

參數跟find一樣

 

12.獲取集合對象

db.getCollection(‘collection_name’)

等價於db.collection

 

13. 文檔的刪除操作

db.collection.remove(query ,justOne)

 

14. 修改文檔內容操作

db.collection.update(query,update,upsert,multi)

與mysql不同,mongodb所有修改操作都用update,包括對集合的域值的修改和集合結構的修改

參數:query     篩選要修改的文檔,相當於where

     update    將篩選的文檔修改為什麼內容,相當於set,需要配合修改操作符一起使用

     upsert     布爾值,預設為false,如果query文檔不存在則不進行修改  ,如果為true,在文檔不存在條件下,則根據query和update插入新文檔

     multi       布爾值,預設為false如果query篩選的為多條,則只修改第一條,如果設置為true,則修改所有符合條件文檔

 註意:

upset 一般為用預設值false,因為如果原本沒匹配的文檔,很有可能是程式員自己輸錯了某些內容

 

修改操作符:

$ set

如果沒有該文檔,需要插入的時候是根據查詢條件和設置條件作為域來插入的

如果需要修改的值為多個,就像插入數據一樣,將不同域的值用一個{ }包起來,例如:

db.class.update({name:'小張'},{$set:{age:16,sex:'m'}},true)

 


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 本人使用的是18款512g的macbookpro<後續簡稱mbp>,已升級最新mojave系統。 以下是我平時記錄、也是使用最多的快捷鍵,惠存。 1.切換拼音和字母 control+空格<或者直接按caps lock> 2.切換字母的大小寫dd 按住shift+字母-->大寫字母 3.撤銷 撤銷:c ...
  • 1. 輸出重定向 最基本的重定向是將命令的輸出發送到一個文件中。在bash shell中用大於號(>) ,格式如下:command > inputfile。例如:將date命令的輸出內容,保存到指定的輸出文件中。 如果文件已存在,重定向操作符會用新的文件數據覆蓋已有文件。這種情況下可以用雙大於號(> ...
  • 在 shell 編程中,常需要處理文本,這裡介紹幾個文本處理命令。 一、grep 命令 grep 命令由來已久,用 grep 命令來查找 文本十分方便。在 POSIX 系統上,grep 可以在兩種正則表達式風格中選擇一種(BRE 和 ERE),或是執行簡單的字元串匹配。傳統上,有三種程式可以用來查找 ...
  • SSH 包含3個組件 (1) ssh 遠程登錄節點 : ssh 用戶名@IP地址 ① 不允許空密碼或錯誤密碼認證登錄 ② 不允許root用戶登錄 ③ 有兩個版本 ssh,ssh2安全性更高 (2) sftp 文件共用連接 , xftp連接就是 sftp實現的 (3)scp 文件拷貝共用 scp命令 ...
  • 輕量桌面Archlinux用戶逃離systemd,擁抱Gentoo的openrc. 鏡像源:官方鏡像源非常慢,曾經一度體驗artix後就放棄了,後來發現了清華和騰訊雲的鏡像,速度非常快,現在又重新安裝了Artix,替代Arch和Manjaro成為了使用的主力發行版。 Artix介紹: "Artix ...
  • Lab1:Booting a PC 概述 本文主要介紹lab1,從內容上分為三部分,part1簡單介紹了彙編語言,物理記憶體地址空間,BIOS。part2介紹了BIOS從磁碟0號扇區讀取boot loader到0000:7c00處,並將cs:ip設置成0000:7c00。boot loader主要做兩 ...
  • 5.1 uname 顯示系統信息 uname -a 可以看到更多的信息,顯示所有 Linux 代表內核名稱 oldboy代表主機名 2.6.32-573.el6.x86_64 內核發行版本號 1 SMP Thu Jul 23 15:44:03 UTC 2015 內核的版本號 cat /etc/red ...
  • Linux中提供了多種命令和程式用於瀏覽文件。無論對於新手、普通用戶、高級用戶、開發人員還是管理員來說,與諸多文件打交道都是一項艱巨的任務。而如何做到高效更稱得上是一門藝術。 今天就讓我們來探討幾個最常使用的命令head、tail和cat,多數人對他們都有所瞭解,但這其中絕大部分人在真正使用的時候恐 ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...