mongdb 入門

MongoDB由C++語言編寫,運行穩(wěn)定,性能高

MongoDB 將數(shù)據(jù)存儲為一個文檔,數(shù)據(jù)結(jié)構(gòu)由鍵值(key=>value)對組成。

MongoDB 文檔類似于 JSON 對象。字段值可以包含其他文檔,數(shù)組及文檔數(shù)組。(實為Bson形式)

特點:

模式自由 :可以把不同結(jié)構(gòu)的文檔存儲在同一個數(shù)據(jù)庫里

面向集合的存儲:適合存儲 JSON風(fēng)格文件的形式

完整的索引支持:對任何屬性可索引

MongoDB文檔類似于JSON對象,字段值可以包含其他文檔、數(shù)組、文檔數(shù)組

MongoDB中的三要素:

數(shù)據(jù)庫是一個集合的物理容器

集合就是關(guān)系數(shù)據(jù)庫中的表

文檔對應(yīng)著關(guān)系數(shù)據(jù)庫中的行

數(shù)據(jù)庫的限制

? ? ? 1.不能是空字符串("")。

? ? ? 2.不得含有' '(空格)、.、$、/、\和\0 (空宇符)。

? ? ? 3.應(yīng)全部小寫。

? ? ? 4.最多64字節(jié)

集合的限制

????????1.集合名不能是空字符串""。

? ? ? 2.集合名不能含有\(zhòng)0字符(空字符),這個字符表示集合名的結(jié)尾。

? ? ? 3.集合名不能以"system."開頭,這是為系統(tǒng)集合保留的前綴。

? ? ? 4.用戶創(chuàng)建的集合名字不能含有保留字符。

文檔的限制

????????1.文檔中的鍵/值對是有序的。

? ? ? ? 2.文檔中的值不僅可以是在雙引號里

? ? ? ? 面的字符串,還可以是其他幾種數(shù)據(jù)類

? ? ? ? 型

? ?????? 3.MongoDB區(qū)分類型和大小寫。

? ? ? ? 4.MongoDB的文檔不能有重復(fù)的鍵。

? ? ? ? 5.文檔的鍵是字符串。

????????????鍵的命名規(guī)范

????????????1.鍵不能含有\(zhòng)0 (空字符)。這個字符用來表示鍵的結(jié)尾。

? ? ? ????? 2. .和$有特別的意義,只有在特定環(huán)境下才能使用。

基礎(chǔ)命令

啟動

service mongod start

低版本啟動

service mongod start

停止

service mongod stop

重置

service mongod restart

啟動mongodb客戶端

mongo

查看當(dāng)前數(shù)據(jù)庫

db

查看所有數(shù)據(jù)庫

show dbs

切換數(shù)據(jù)庫 (創(chuàng)建數(shù)據(jù)庫)

use dbname

查看數(shù)據(jù)庫的狀態(tài)信息

db.stats()

詳細(xì)信息每一項的含義

db:當(dāng)前數(shù)據(jù)庫的名字。

? ? collections:當(dāng)前數(shù)據(jù)庫的集合數(shù)。

? ? objects:當(dāng)前數(shù)據(jù)庫所有集合總所包含的對象(即文檔)的數(shù)量。

? ? avgObjSize:每個文檔的平均大小(以字節(jié)為單位)。

? ? dataSize:此數(shù)據(jù)庫中保存的未壓縮數(shù)據(jù)的總大小,不是指占有磁盤大小,單位是bytes。

? ? storageSize:分配給此數(shù)據(jù)庫的集合用于存儲文檔的空間總量,也就是當(dāng)前數(shù)據(jù)庫占有磁盤大小,單位是bytes。

? ? numExtents:當(dāng)前數(shù)據(jù)庫所有集合包含的擴展數(shù)量的統(tǒng)計。

? ? indexes:數(shù)據(jù)庫中包含的所有集合的索引總數(shù),也就是system.indexes表數(shù)據(jù)行數(shù)。

? ? indexSize:此數(shù)據(jù)庫上創(chuàng)建的所有索引的總大小,單位是bytes。

數(shù)據(jù)庫刪除:刪除當(dāng)前指向的數(shù)據(jù)庫,如果數(shù)據(jù)庫不存在,則什么也不做

查看數(shù)據(jù)庫下的所有集合

show collection

刪除數(shù)據(jù)庫(刪除當(dāng)前所在的數(shù)據(jù)庫)

db.dropDatabase()

創(chuàng)建集合和

db.createCollection('dbname') (非固定大小)

db.createCollection('dbname',{'capped':true,'size','1000','max':'10'}) (固定大小)

創(chuàng)建的集合的字段的選項

字段? ? ? ? ? ? ? ? 類型? ? ? ? ? ? ?描述? ? ? ? ??

capped? ? ? ? ?布爾? ? ? ? ? ? ? ??如果為 true,則創(chuàng)建固定集合。固定集合是指有著固定大小的集合,當(dāng)達到最大值時,它會自動覆蓋最早的文檔。 當(dāng) 該值為 true 時,必須指定 size 參數(shù)。

autolndexld? ? ? 布爾? ? ? ? ? ? ??如為 true,自動在 _id 字段創(chuàng)建索引。默認(rèn)為 false。

size? ? ? ? ? ? ? ? 數(shù)值? ? ? ? ? ? ?為固定集合指定一個最大值.當(dāng)文檔達到上限時,會將之前的數(shù)據(jù)覆蓋,單位為字節(jié)。如果 capped 為 true,也需要指定該字段。

max? ? ? ? ? ? ? ?數(shù)值? ? ? ? ? ? ? ? ??指定固定集合中包含文檔的最大數(shù)量。

插入數(shù)據(jù)

db.collectionname.insert({document})

查找數(shù)據(jù)

db.students.find({})

db.students.find()

將數(shù)據(jù)以格式化的方式展示pretty()

db.集合名稱.find().pretty()

關(guān)于ObjectId

ObjectId 類似唯一主鍵,可以很快的去生成和排序

每個文檔都有一個屬性,為_id,保證每個文檔的唯一性

可以自己去設(shè)置_id插入文檔

如果沒有提供,那么MongoDB為每個文檔提供了一個獨特的_id,類型為objectID

objectID是一個12字節(jié)的十六進制數(shù)

? ? 前4個字節(jié)為當(dāng)前時間戳

? ? 接下來3個字節(jié)的機器ID

? ? 接下來的2個字節(jié)中MongoDB的服務(wù)進程id

? ? 最后3個字節(jié)是簡單的增量值

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容