天天看點

MongoDB學習筆記(一)

Mongodb

資料存儲階段

檔案管理階段 (.txt .doc .xls)

優點:

資料可以長期儲存

資料有一定的格式化規範

可以大量存儲

使用簡單友善

缺點:

資料一緻性差

使用者查找修改不友善

資料備援

資料庫管理階段

優點:

資料組織結構化,降低了備援

提高了增删改查的效率

便于擴充,友善程式調試做自動化處理

缺點:

資料庫的使用往往專業性比較強,相對比較複雜

幾個概念:

資料:能夠輸入到計算機中,并被識别處理的資訊的集合

資料結構:研究組成資料集合中資料之間關系的學科

資料庫:按照資料結構,存儲管理資料的倉庫,是在資料管理系統軟體管理和控制下建立在一定媒體上的資料集合

資料管理系統:資料管理軟體,用于維護管理資料庫

資料庫系統:由資料庫,資料庫管理系統,開發工具等組成的工具集合

非關系型資料庫:

優點:

高并發,讀寫能力強

擴充性強,使用靈活

弱化了資料結構,降低資料一緻性

缺點:

通用性差,沒有sql那樣統一的操作語句

操作靈活,容易混亂

沒有join等複雜操作,版本更新快

Nosql的使用情況

1.資料的一緻性要求低

2.處理資料的海量并發

3.資料庫大小不容易确定,需要分布擴充

4.給定的資料結建構立非關系模型更加容易

mongodb資料庫組成結構

組織結構: 鍵值對 文檔 集合 資料庫

mysql中這樣的表單如何用mongo建立

ID   |  name   | age |
 ----------------------
 1    |  jojo   | 24  |
 ----------------------
 2    |  wenrou | 18  |
           

使用mongo插入資料對比

{
"_id":1,
"name":"jojo",
"age":17
}
{
"_id":2,
"name":"wenrou",
"age":18
}
           

mysql 和 mongodb概念比較

mysql           mongodb      含義
    
database        database     資料庫

table           callection   表/集合

column          field        字段/域

row             document     記錄/文檔

index           index        索引
           

建立資料庫

use databaseName
           

e.g. 建立一個stu的資料庫

use stu
           

實際上,use是選擇使用一個資料庫,當選擇的資料庫不存在的時候,就會建立

隻有像資料庫中插入資料時,資料庫才會被真正的建立出來,而use後,不會馬上被建立

show dbs 檢視資料庫 == show databases

系統資料庫

admin :存放使用者和權限

local :存放本地化資料

config :存儲分片資訊

資料庫的命名規則

1.mongodb是嚴格區分大小寫的

2.使用utf-8字元(雖然utf-8,但習慣使用小寫字母,表達資料庫的含義)

3.不能含有空格 . / \ ‘\0’ 字元

4.長度不能超過64位元組,不能和系統資料庫重名

db : mongo系統全局變量,代表目前正在使用的資料庫對象

當不使用use選擇任何資料庫的時候,db代表test,此時插入資料則建立test資料庫

資料庫的備份和恢複

備份

mongodump -h dbhost -d dbname -o dbdir

mongodump -h 127.0.0.1 -d stu -o D:\bak
           

備份 stu 資料庫 到D:\bak 目錄下 如果不存在bak 則自動建立

恢複

mongorestore -h db host:port -d dbname dbpath

mongorestore -h 127.0.0.1:27017 -d student D:\bak\stu

将stu資料庫恢複到127.0.0.1上的student資料庫中,如果student不存在,則自動建立

資料庫的檢測指令(動态)

mongostat

insert query updata delete : 每秒增查改删的次數

command : 每秒運作指令的次數

flushes : 每秒和磁盤互動次數

vsize : 使用虛拟記憶體大小

mongotop : 檢測每個資料讀寫時長

ns : 資料集合

total : 總時長

read : 讀時長

write : 寫時長

删除資料庫

db.dropDatabase()
           

删除db所代表的資料庫

eg:
use student
db.dropDatabase()
{ "dropped" : "student", "ok" : 1 }
表示删除成功
           

集合的建立和删除

建立集合:

db.createCollection(collection_name)    
db.createCollection("class1")
           

當向一個集合中插入資料的時候,如果這個集合不存在,則自動建立

db.collection.instert(...)
           

如果class2不存在,則建立這個集合,并插入資料

db.class2.insert({"name":"lucy","age":18})
           

檢視集合

show collections
show tables
           

集合的命名規則:

1.合法的utf-8字元串

2.不能有’\0’

3.不能以system. 開頭(這是系統的保留字首)

4.不能和關鍵字重複(例如:insert,tables,等)

删除集合

db.collection.drop()
           

删除class2集合

db.class2.drop()
           

一次性删除所有集合:

不如試試删除這個資料庫好了:)

集合重命名

db.collection.renameCollection("new_name")
           

将class1重命名為class0

db.class1.renameCollection("class0")