初試MongoDB數據庫

數據庫基本概念

數據庫(Database)基本概念:html

  1. 數據庫就是按照必定的數據結構來組織,儲存和管理數據的倉庫
  2. 咱們寫的程序都是在內存中運行的,一旦程序運行結束或者計算機斷點,程序運行中的數據就會所有丟失;因此咱們就須要將一些程序的數據持久化到鍵盤之中,以確保數據的安全性。
  3. 數據庫則是大批量數據持久化的廣泛選擇,1.文件 2. 數據庫

爲何都採用數據庫來儲存數據:web

  • 數據庫是有結構的
  • 數據庫能夠提供各類接口,讓數據處理(增刪改查)快捷方便
  • 各類語言(PHP jsp .net..)提供了完善的接口

b6dde1cf95ae2a9ec8e68c0bf1719a3.png

###數據庫分類sql

  1. ROBMS(關係型數據庫):
    • 好比MySql 、sql server Oracle 等
    • 特色 經過一張張表來創建關聯
    • 基本都使用SQL語言來管理數據庫,
  2. Nosql (非關係型數據庫):
    • 沒有行 、列的概念 用json類儲存數據
    • 集合至關於「表」,文檔至關於「行」
    • 標準化和非標準化的摩擦。
    • 標準化限制創新,非標準話不能統一

特徵: 使用鍵值(Key Value)儲存數據; MongoDB的邏輯結構是一種層次結構,主要由:文檔(document)、集合(collection)、數據庫(database)這三部分組成的。mongodb

  • 文檔(document):由鍵/值對構成,像{a:1};{s:」abc」}等,它是MongoDB核心單元,MongoDB的文檔(document),至關於關係數據庫中的一行記錄。
  • 集合(Collection):多個文檔組成一個集合(collection),至關於關係數據庫的表。
  • 數據庫(database):多個集合(collection),邏輯上組織在一塊兒,就是數據庫(database)。 一個MongoDB實例支持多個數據庫(database)。

關係型數據庫和非關係型數據庫區別: 關係型數據庫比較結構化,操做不是很靈活,菲關係型數據庫操做靈活,但不適合大型數據存儲,比較適合微架構,二者是相輔相成的關係 數據庫

8bc32dd95a923344fdc2710d2fcbeab.png

非關係型數據庫使用方面:json

  1. 數據模型比較簡單
  2. 須要靈活性更強的後臺系統
  3. 對數據庫性能要求比較高
  4. 不須要高度的數據一致性

非關係型數據庫主要適合小微型架構的使用數組

數據庫MongoDB安裝

MongoDB(非關係型數據庫):安全

  1. 適合快速開發web應用而設計的數據庫系統
  2. 設計目標是極簡、靈活、常常在web應用棧的業務層被運用
  3. 它的數據模型是面向文檔的,相似於json的結構
  4. 因此這個數據庫中是各類各樣的json, 並以鍵值形式對存儲

安裝: 下載:www.mongodb.com/ 偶數是穩定版,奇數是開發版 最好下載64位的系統版本的bash

配置環境變量:服務器

  1. 新建--->安裝到bin路徑複製到環境變量
  2. 建立data->db文件夾
  3. 打開命令行輸入mongod啓動DB服務器
  4. 指定端口號和路徑 mongod --dbpath d:\data\db
  5. 將MongDB設置爲系統服務,data\log 建立配置文件在bin下穿件文件mongod.cfg 執行一段命令:
sc.exe create MongoDB binPath= "\"F:\MongoDB\Server\3.2\bin\mongod.exe\" --service --config= \"F:\MongoDB\Server\3.2\mongod.cfg\"" DisplayName= "MongoDB" start= "auto"
複製代碼

主要是讓MongoDB一直運行在內存中 參考資料: www.cnblogs.com/wzlblog/p/6… www.cnblogs.com/chenlq/p/65…

在命令行中使用MongoDB插入命令

MongoDB的組成:

  • 數據庫 數據庫是一個倉庫 在倉庫裏能夠放集合
  • 集合: 集合相似數組 在集合裏能夠放文檔
  • 文檔:文檔是數據庫中最小的單位 咱們儲存和操做的內容都是文檔。

基本指令: show dbs 顯示當前全部的數據庫 use 數據庫名 進入到指定數據庫 db 顯示當前所在的數據庫 show collections 顯示數據庫中的全部集合

使用管理員打開 cmd 輸入 mongo進入MongoDB的環境 進入MongoDB的環境才能執行MongoDB的命令 而後使用命令行進行CRUD(增刪改查): db.<collection>.insert(doc)

舉例子: 想school數據庫中的學生集合student中插入一個新的學生對象 增長一條數據: db.student.insert({id:"001",name:"znl",age:18,sex:「男」}) 在當前的集合(school)中新建一條數據

查詢一條數據: db.<collection>.find();

如:db.student.find(); 回車 就能查詢student下的全部數據 插入多條數據:

db.集合名.insert([
    {name:"張三",age:18,sex:"man"},
    {name:"張三",age:18,sex:"man"},
    {name:"張三",age:18,sex:"man"},
    {id:18,name:"張三",age:18,sex:"man"}
]);
複製代碼

插入多條數據時把多條語句放在一個數組裏 插入可隨便插入 沒必要拘泥於字段是否相同 當插入的字段不存在時會自動建立該字段

查看更多更多操做:www.mongodb.org.cn/manual/

MongoDB 可視化工具 【NOSQL】

然而一直使用命令行操做是很麻煩的事情,因此推薦使用NOSQL可視化工具 安裝可視化工具下載地址:www.mongodbmanager.com/download

使用可視化工具

可視化工具 查找功能: 插入(insert)語句:

db.student(集合名字).insert([
{id:1,name:"znl",age:18},
{id:1,name:"znl",age:18},
]);
複製代碼

查詢語句: db.student(集合name).find();

設定條件查詢: db.student.find({ "_id" : ObjectId("5bd01c825f0d528d36a2c06f")}); 查詢id對應的數據 db.student.find({age:18,name:"張三"}); 查詢全部的age是18而且name是張三的人 db.student.findOne({age:18,name:"張三"}); 查詢單條符合條件的數據

操做符-查詢有多少條數據: db.student.find().count();db.student.find().length(); 返回數據總條數

查詢符合條件數據的條數: db.student.find({name:"張三"}).length(); 返回符合name:"張三"的條數

數據庫更新命令

更新原有的字段的數據:

db.student.update({"name":"張三"},{$set:{
      name:"劉五",
      age:45
}});
複製代碼

把匹配到的name:"張三"的數據都更新成 name:"劉五", age:45 也能夠新增沒有的字段 直接寫入就能夠 $set :有這個字段就修改 沒有這個字段就新增

刪除一個字段:

db.student.update({"name":"張三"},{$unset:{
    age:1
}});
複製代碼

查詢name:張三的一條數據 而後刪除它的age字段

修改多條:

db.student.updateMany({"sex":"man"},{$set:{
    aihao:"玩遊戲"
}});
複製代碼

把符合sex:man的語句都新增(修改)一條aihao:"玩遊戲" $set :有則修改 無則新增

更新多條數據方法2:

db.student.update({name:"張三"},{$set:{
      name:"王五"
}}, {
     multi:true
});
複製代碼

參考文檔:docs.mongodb.com/manual/tuto…

相關文章
相關標籤/搜索