資料庫之mongodb

来源:https://www.cnblogs.com/cz-basic/archive/2018/05/23/9079398.html
-Advertisement-
Play Games

啟動mongodb服務端 : sudo service mongod start 或者 sudo /usr/local/mongodb/bin/mongod --config /etc/mongodb.conf 停止mongodb服務端: sudo service mongodb stop 查詢mo ...


啟動mongodb服務端 : sudo service mongod start 或者 sudo /usr/local/mongodb/bin/mongod --config /etc/mongodb.conf

停止mongodb服務端: sudo service mongodb stop

查詢mongodb伺服器狀態命令查詢狀態
ps -ajx|grep mongod 或者 sudo systemctl status mongodb

資料庫操作

進入資料庫:mongo

顯示所有的資料庫:show databases ->show dbs

查看選手某個資料庫:db

資料庫切換(選擇和創建):use 資料庫名  ps: use test  預設是不會出現這個資料庫,除非創建集合才會出現

查看當前資料庫名稱:db

顯示集合:show collections     ps:這裡的集合數據於mysql里的表

查看集合的數據:db.集合名.find({})  ps:db.student.find({})   其中{}可以不寫

刪除資料庫:db.dropDatabase()

sql語句中的刪除資料庫:drop database test3;

退出資料庫:Ctrl+c或者exit

集合(表)操作

在某個資料庫裡面創建集合:db.createCollection(name, options)

      name是要創建的集合的名稱

   options是一個文檔,用於指定集合的配置 ,選項​​參數是可選的,所以只需要到指定的集合名稱.

  ps: 創建集合,集合的名字叫students:db.createCollection("students")

查看當前資料庫的所有集合:show collections或者show tables

刪除集合: db.students.drop()

數據基本操作

插入數據:db.集合名稱.insert(document)    插入文檔時,如果不指定_id參數,MongoDB會為文檔分配一個唯一的ObjectId

  insert,如果存在會報錯

  ps: db.students.insert({"name":"gj",gender:1})

查看數據:db.students.find({})或者db.students.find()

也可以自己指定id:

  ps:db.students.insert({id:"20180418","name":"gj",gender:1})

 

簡單查詢

查詢所有的數據:db.students.find()或者db.students.find({})

更新數據:

db.集合名稱.update(<query>,<update>,{upsert: <boolean>,multi: <boolean>})

參數query:查詢條件,類似sql語句update中where部分

參數update:更新操作符,類似sql語句update中set部分

參數upsert : 可選,這個參數的意思是,如果不存在update的記錄,是否插入objNew,true為插入,預設是false,不插入。

參數multi:可選,預設是false,表示只更新找到的第一條記錄,值為true表示把滿足條件的文檔全部更新

  ps:預設值更新一條數據,並且結構被修改  db.student.update({},{name:'mnc'})

   預設值更新一條數據,只修改欄位,不破壞數據  db.stu.update({},{$set:{name:'mnc'}})

    全文檔找更新找到的第一條,把{name:'hr'}對應的這條修改成{name:'mnc'},其他欄位全部丟掉

      db.students.update({name:"hr"},{name:"mnc",gender:1})

    指定屬性更新,通過操作符$set數據結構不會被破壞,也是只修改一條  

      db.students.update({"name":"mnc"},{$set:{gender:0}})

修改多條匹配到的數據:多條操作一定要配合$set,否則會報錯註意true和flase是小寫

ps:把所有的性別都修改成女生  db.students.update({},{$set:{gender:0}},{multi:true})

 把所有的gj修改成“郭靖”,並且不破壞結構  db.students.update({"name":"gj"},{$set:{"name":"郭靖"}},{multi:true})

            "$set"也可加引號:db.students.update({"name":"gj"},{"$set":{"name":"郭靖"}},{"multi":true})

方法findOne():查詢,只返回第一個文檔:db.集合名稱.findOne({條件文檔})

方法pretty():將結果格式化: db.集合名稱.find({條件文檔}).pretty()

 

保存:

db.集合名稱.save(document)   如果文檔的_id已經存在則修改,並且結構變化,如果文檔的_id不存在則添加註意,如果_id寫成是id,則會把id當成key

 ps:db.students.save({"_id":"20180418","name":"張三","gender":1})

刪除:db.集合名稱.remove(<query>,{justOne: <boolean>})

  參數query:可選,刪除的文檔的條件

  參數justOne:可選,如果設為true或1,則只刪除一條,預設false,表示刪除多條

  ps:只刪除匹配到的第一條   db.students.remove({"name" : "gj"},{"justOne":true})

  全部刪除: db.students.remove({})

關於max的示例

 ps:創建一個名為sub的定長集合,長度為5個位元組,可容納的文檔數為3

  db.createCollection("sub",{"capped":true,size:5,max:3}) 這裡當插入的文檔數超過3時會自動替換前一個文檔

比較運算符

  等於,預設是等於判斷,沒有運算符

  小於$lt  電腦術語裡面是 less than,意思是小於,縮寫是lt

  小於或等於$lte

  大於$gt   對應 greater than,意思是大於,縮寫是gt ;

  大於或等於$gte

  不等於$ne  對應 Not equal to,意思是不等於,縮寫ne;

  ps:查詢課時大於或等於2的學科  db.sub.find({"count":{"$gte":2}})

   查找標題不是mongodb的學科   db.sub.find({'title':{'$ne':"mongodb"}})

 邏輯運算符

  查詢時可以有多個條件,多個條件之間需要通過邏輯運算符連接

  邏輯與:預設是邏輯與的關係,多個條件直接用逗號連接

    ps:查詢課時大於或等於10,並且標題為web的學科  db.sub.find({"count":{"$gte":10},"title":"web"})

  邏輯或:使用$or 

    ps:查詢課時大於10,或標題為web的學科 db.sub.find({"$or":[{"count":{"$gt":10}},{"title":"web"}]})

範圍運算符--"$in":使用"$in","$nin" 判斷是否在某個範圍內

  ps:查詢課時為8、14的學科  db.sub.find({"count":{"$in":[8,14]}})

   查詢課時不為8、14的學科 db.sub.find({"count":{"$nin":[8,14]}})


Limit與Skip:

  db.集合名稱.find().limit(NUMBER), 參數NUMBER表示要獲取文檔的條數, 如果沒有指定參數或者0則顯示集合中的所有文檔

  方法limit():用於讀取指定數量的文檔 ps:  查詢2條信息 db.sub.find({}).limit(2)

  方法skip():用於跳過指定數量的文檔

  db.集合名稱.find().skip(NUMBER)   參數NUMBER表示跳過的記錄條數,預設值為0

  ps:查詢從第3條開始的學生信息 db.stu.find().skip(2)

  

limit()skip()一起使用:

  ps: 從第二條開始,並且只要三條  db.sub.find().skip(2).limit(3)

 

MongoDBpython交互:

創建客戶端:

#無安全認證:
client = MongoClient('localhost', 27017)
client = MongoClient('mongodb://localhost:27017/資料庫名稱')
client = MongoClient('mongodb://localhost:27017/test1')

#有安全認證:
client = MongoClient('mongodb://用戶名:密碼@localhost:27017/資料庫名稱')
client = MongoClient('mongodb://t1:123@localhost:27017/test1')

代碼實現:

from pymongo import MongoClient

client = MongoClient("mongodb://localhost:27017/test1")
#得到名字叫test1的資料庫

test1 = client['test1'] #也可以寫成 test1 = client.test1
#得到名字叫t1的集合

t1 = test1['t1'] #也可寫成 t1 = test1.t1
#要插入的數據
s1 = {"name":"郭靖","age":18}
s = t1.insert_one(s1)

更新數據:

s = t1.update_one({"name":"郭靖"},{"$set":{"name":"黃蓉"}})

刪除數據:

s1 = t1.delete_one({'name':'黃藥師'})

查找數據:

s1 = t1.find_one({'name':'黃蓉'})
#查找所有數據 t1.find()

 

 

  

 


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

-Advertisement-
Play Games
更多相關文章
  • 1、d: 進入d盤 2、dir(directory) 顯示當前文件夾下的所有內容 3、md (make directory) +文件夾名 在當前文件夾下創建文件夾 4、rd (remove directory)+文件夾名 刪除文件夾 5、del+文件名(需要尾碼) 刪除文件 6、cd (change ...
  • 在Linux系統,如果是連接ssh修改密碼,那非常簡單,關鍵是如何實現只要調用命令就能修改密碼,而且不需要交互輸入密碼呢? ...
  • systemd概述 systemd核心概念:unit systemd的service unit file詳解 實例:編譯安裝httpd,並實現通過systemd進行管理 1)通過 rpm -q httpd 命令檢查系統是否已安裝apache,如有先進行卸載; 2)下載Apache(httpd)源碼: ...
  • ./nginx 啟動服務./nginx -s stop 關閉服務./nginx -s reload 重新載入配置文件 首先我們應當安裝一個依賴的軟體包: yum install gcc-c++yum install -y pcre pcre-develyum install -y zlib zlib ...
  • 最近在做rac,在環境檢查的時候發現swap空間檢查不通過,所以我們第一想到的是對swap進行擴容,那麼swap擴容有哪些方法呢?這裡主要介紹兩種方法,一通過添加額外磁碟,擴展swap分區,二是通過本地多餘空間的方式擴展swap分區。 一、現象描述 查看內容使用情況: 查看磁碟分區掛在情況: 這裡看 ...
  • SQL Server 獲取數據的總記錄數,有兩種方式: 1.先分頁獲取數據,然後再查詢一遍資料庫獲取到總數量 2.使用count(1) over()獲取總記錄數量 第二種方式既分頁還能獲取到總記錄數量。就是多一個欄位,如果獲取一次數據較多的話,會浪費一些流量。 如果使用第一種的話,會多訪問一次資料庫 ...
  • GTID複製典型的複製錯誤有兩種:1,數據對象級別的錯誤,包括主庫上update的數據在從庫上不存在,主從逐漸衝突,庫表索引等對象的衝突等等, 如果是純粹的跳過錯誤的話,這一類的錯誤需要跳過思路是找到主庫binlog中對應的事務Id然後在從庫上跳過即可。2,日誌找不到的錯誤,也即從庫在執行利用主庫上 ...
  • DataNode進程不見了 問題描述 最近配置Hadoop的時候出現了這麼一個現象,啟動之後,使用jps命令之後是這樣的: 看不到DataNode進程,但是能夠正常的工作,是不是很神奇啊? 在一番百度谷歌之後,得出了結論: 我在啟動Hadoop之前和啟動之後,曾經多次使用如下命令,針對NameNod ...
一周排行
    -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.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...