mongodb細講

来源:https://www.cnblogs.com/DonCharles/archive/2018/11/02/9897262.html
-Advertisement-
Play Games

一、 關係型資料庫(sql) 1.建表 二、非關係型資料庫(nosql 98提出的概念) 1.不用建庫建表數據直接存入就可 優缺點: 關係型:節約資源(學生姓名和課程名不重覆出現),開發不方便(需先建庫建表,外鍵等) 非關係型:浪費資源(學生姓名和課程名重覆出現),開發方便(不需要建庫建表,數據直接 ...


一、 關係型資料庫(sql)

1.建表

 

 

二、非關係型資料庫(nosql  98提出的概念)

1.不用建庫建表數據直接存入就可

  

優缺點:

  關係型:節約資源(學生姓名和課程名不重覆出現),開發不方便(需先建庫建表,外鍵等)

  非關係型:浪費資源(學生姓名和課程名重覆出現),開發方便(不需要建庫建表,數據直接存)

  開發常用關係型,爬蟲常用非關係型

 

三、Ubuntu安裝: sudo apt-get install mongodb

  Centos安裝:sudo yum install mongodb

四、mongodb基本操作:

  1.啟動:sudo service mongodb start

  2.停止:sudo service mongodb stop

  3.重啟:sudo service mongodb restart

  4.進入客戶端:mongo

    

    出現上圖代表正確進入

  5.退出客戶端:exit、ctrl + c

  6.預設埠:27017

  7.預設配置文件位置:/etc/mongod.conf

  8.預設日誌位置:/var/log/mongodb/mongod.log

  9.查看幫助命令:mongod -help  (或進入mongo直接 help)

  10.關於database的基本命令:

    a.查看所有的庫:show database、  show databases、show dbs

    b.使用一個庫:use 庫名

    c.查看當前庫名:db

    d.切換資料庫:use 庫名

    e.刪除當前資料庫:db.dropDatabase()

    f.第一次向資料庫中加入數據時,資料庫自動創建。

  11.關於集合的基本命令:

    a.不用手動創建集合,向不存在的集合第一次加入數據時,集合會自動創建出來

      

      如圖集合會自動創建

    b.手動創建集合:

      db.createCollection('stu')

      db.createCollection(name, options)

      db.createCollection('stu', {capped:true, size:10})

      參數capped:預設為false表示不設置上限,當值為true表示設置上限,參數size當capped為true時,需要指定此參數,表示上限大小,單位為位元組,如果數據超過上限,會將之前的數據覆蓋。

    c.查看集合:show collections

    d.刪除集合:db.集合名.drop()

  12.數據類型:

    ObjectId:文檔id

    String 字元串,必須是有效的utf-8

    Boolean   存儲一個布爾值    true     false

    Integer 整數    32位或64位取決於伺服器

    Double   浮點型

    Arrays    數組,列表,多個值存儲到一個鍵

    Object    一個值就是一個文檔

    Null        存儲Null值

    Timestamp       時間戳,表示從1970.1.1到現在的總秒數

    Date       存儲當前的日期或時間

    ObjectId  是一個12位元組的十六進位數,前四個位元組是當前的時間戳,接下來三個位元組是機器的id,接下來的兩個位元組是mongodb的服務進程id最後三個位元組是簡單增量值 

  13.數據插入:

    db.集合名.insert(數據)

    db   指的是本資料庫

    集合名   相當於mysql中的表    例:

      

  14.保存:

    db.集合名.save(數據)

    如果_id不存在,則添加數據,如果_id存在,則修改數據

    例:

      

  15.簡單查詢:

    db.集合名.find()  例:

      

  16.複雜查詢:

    比較運算符(等於(預設)、小於($lt)、小於等於($lte)、大於($gt)、大於等於($gte)、不等於($ne))

     例:

      

    邏輯運算符:

      and:直接寫多個條件

        

      or:使用 $or,值為一個數組,數組中每個元素為json

        

         組合使用

        

      $in 範圍之內

      $nin 不在範圍之內

        

  17.排序:

    db.集合名.find().sort({欄位:1})   參數1位升序,-1位降序

    升序   db.stu1.find().sort({math:1})

    降序   db.stu1.find().sort({math:-1})

  18.統計個數

    方法count()用於統計結果集中文檔條數

    db.集合名.find().count()

    db.集合名.count({條件})

    

  19.消除重覆

    方法distinct()對數據進行去重

    db.集合名.distinct('去重欄位',{條件})

    例:

      

  20.更新

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

    參數query:查詢條件

    參數update:更新操作符

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

    

    可見這樣更新有問題,應該這樣:

    

    發現這樣只會更新一條,若更新全部應:

    

   21.刪除

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

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

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

    

   22.查詢結果處理

    查詢結果格式化:

      db.集合名.find(條件).pretty()

      

      db.集合名.findOne(條件):只返回第一個結果

    指定文檔數量

      方法limit()  用於讀取指定數量的文檔

        db.集合名.find().limit(number)

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

        db.集合名.find().skip(number)

  23.投影

    在查詢的返回結果中,只選擇必要欄位

      db.集合名.find({}, {欄位名1:1,欄位名2:1})

      參數為欄位名,值1表示顯示,值為0表示不顯示

      特殊:對於_id列預設是顯示的,如果不顯示需要明確設置為0

      

 


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

-Advertisement-
Play Games
更多相關文章
  • 1. systemd新特性 2. systemd的常見unit類型 3. Systemd關鍵特性 4. 編譯安裝nginx,並使用systemd管理nginx ...
  • CDN是什麼 CDN是Content Delivery Network 即內容分髮網絡 優勢 CDN的原理 普通的請求過程 CDN加速後的過程 CDN分類 按內容區分 網頁加速 流媒體加速 大文件加速 應用協議加速 按推送類型分 主動推送 被動獲取 應用場景 流量劫持 鏈路劫持 鏈路層劫持是指第三方 ...
  • cat命令的用途是連接文件或標準輸入並列印。這個命令常用來顯示文件內容,或者將幾個文件連接起來顯示,或者從標準輸入讀取內容並顯示,它常與重定向符號配合使用。 一.命令格式: cat [參數] [文件]... 二.命令功能: cat主要有三大功能: 1.一次顯示整個文件:cat filename 2. ...
  • Shadowsocks即有服務端還有專門的客戶端,支持全平臺,神馬Windows、Linux、Mac、Android、iOS、OpenWrt...統統都支持。下麵主要介紹server和client的安裝過程。 ...
  • 關鍵字if+trim trim可以去除多餘的關鍵字,是where和set的組合 trim標記是一個格式化的標記,可以完成set或者是where標記的功能,如下代碼: <trim prefix="" suffix="" suffixOverrides="" prefixOverrides=""></t ...
  • 當使用plsqldev客戶端登錄oracle資料庫時,如果對應的tnsnames.ora中是直接使用IP地址來連接,並且未在系統的hosts文件中綁定主機名時,極易出現ORA-12502及ORA-12545報錯,這兩種錯誤內容分別是: ORA-12502: TNS:listener received ...
  • hive中的轉義符 Hadoop和Hive都是用UTF-8編碼的,所以, 所有中文必須是UTF-8編碼, 才能正常使用 備註:中文數據load到表裡面, 如果字元集不同,很有可能全是亂碼需要做轉碼的, 但是hive本身沒有函數來做這個 一、轉義字元的特殊情況: 自身的轉義,比如java有時候需要兩個 ...
  • 一.概述 在sql server里臨時表存儲在TempDB庫中,TempDB是一個系統資料庫,它只有Simple恢復模式,也是最小日誌記錄操作。主要用於存放局部臨時表,全局臨時表,表變數,都是基於臨時特征,每次伺服器或服務重啟後,都會按照Model庫的配置重新創建TempDB庫。在sql serve ...
一周排行
    -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.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...