文檔至關於關係型數據庫中的row。javascript
文檔中的鍵值對是有序的。java
一個集合就至關於一個表。正則表達式
假設集合裏面一個名爲"type"的字段用於指明文檔是水果仍是蔬菜,那麼應該將這兩種不一樣類型的文檔拆分紅兩個集合。shell
使用「.」分割不一樣命名空間的子集合。在MongoDB中,使用子集合來組織數據很是高效,值得推薦。數據庫
多個文檔組成集合,多個集合組成數據庫。數組
數據庫名應所有小寫。函數
數據庫最終會變成文件系統中的文件,因此數據庫名有不少限制。code
自帶保留數據庫:對象
對應「root」數據庫,添加一個用戶後,自動獲取全部數據庫權限。blog
永不可複製
存儲分片信息
默認啓動C:\data\db
目錄,不存在會報錯。
shell是一個功能完備的JavaScript
解釋器,可運行JavaScript
程序。
Mongo可以使用JavaScript
標準庫,定義和調用JavaScript
函數。
db.help()
查看數據庫級別的幫助,db.foo.help()
查看集合級別的幫助。
> db.blog.insert({"name":"Rohan","date":new Date()})
shell會自動顯示最多20個匹配的文檔
update至少接受兩個參數
Mongo在JSON包含的六種數據類型:null
、布爾、數字、字符串、數組和對象。的基礎上新增了其餘類型:
默認64位浮點型數值,整型eg:{"x" : NumberInt("3")}
{"x" : new Date()}
{"x" : /foobar/i}
能夠包含不一樣數據類型的元素
{"x" : ObjectId()}
能夠包含任意JavaScript代碼
db.foo.insert({"bar" : "baz"})
batchInsert
接收的參數是一個數組裏面嵌套字典,此時會生成多個document,eg:
db.foo.batchInsert([{"name" : "Rohan"},{"sex": "None"}])
批量插入的最大消息爲48MB,超過期,多數驅動程序會將這個請求拆分爲多個48MB的請求。
批量插入時,某個文檔失敗時,以前插入的OK,後續的沒法進行,若是指望忽略錯誤,可使用continueOnError
選項。
全部的文檔必須小於16MB,Object.bsonsize(doc)
查看文檔大小
db.foo.remove({"可選":"鍵值對"})
永久刪除,不能撤銷,不能恢復。
db.foo.drop()
速度更快
db.foo.update({"定位器":"value"},{新的集合})
此操做屬於將新的文檔徹底替換掉了目標文檔,甚至包括_id
,固然_id
不能重複否則失敗。千萬當心使用!!!
$set
修改器指定定位器文檔的一個字段的值,若是這個字段不存在,則建立;存在則更新:
do.foo.update({"user":"Rohan"},{"$set":{"最喜歡的語言":"Python"}})
注意此處$set
後面跟着一個字典,是一個嵌套文檔。
$set
能夠修改值的類型,從字符串變爲list。
$set
能夠修改嵌套文檔,eg:
do.foo.update({"user":"Rohan"},{"$set":{"address.company":"山東"}})
$unset
能夠將這個鍵徹底刪除,eg:
do.foo.update({"user":"Rohan"},{"$unset":{"最喜歡的語言":1}})
$inc
數值修改器一樣字段不存在,則建立;存在則在原有基礎上增長,只能是數字,eg:
do.foo.update({"user":"Rohan"},{"$inc":{"Age":25}})