標籤:style color java os 使用 資料 代碼 javascript size
推薦學習書籍:MongoDB權威指南
一、簡介
MongoDB:面向文檔的資料庫。(不是關係型資料庫)
其採用的面向文檔的資料模型使其可以自動在多台伺服器之間分割資料。
二、入門
1、什麼是文檔?
文檔時MongoDB中資料的基本單元。(類似於關係型資料庫中的行,但比行複雜)。
自己理解:多個索引值對的有序放在一起
注意:
- 文檔中的鍵是字串(少數例外情況可以使用任意的utf-8字元)
- MongoDB不僅區分類型,也區分大小寫。如:數字3 和 字串“3”不同。
- 每個文檔有唯一的_id來標示
2、集合
集合就是一組文檔。是無模式的,即一個集合裡的文檔可以是各式各樣的。
3、資料庫
多個文檔組成集合,同樣多個集合組成資料庫。
4、MongoDB shell
MongoDB內建一個javascript shell,可以從命令列與MongoDB執行個體互動。
4.1、shell中的基本操作(CRUD)
- 建立 insert
- 讀取 find() 或 findOne()
- 更新 update()
- 刪除 remove
4.2 學會使用協助 help
5、資料類型
null、布爾、32位整數、64為整數、64位浮點數、字串、符號 ??、對象id、日期、Regex、代碼、位元據、最大值、最小值、未定義、數組、內嵌文檔(常用)
三、建立、更新及刪除文檔
1、插入
若插入多個文檔,批量插入會更快一些。
2、刪除
刪除資料時永久性的,不能撤銷也不能恢複。
3、更新文檔
- 文檔替換 delete update
- 使用修改器
- $set用來指定一個鍵的值,若該鍵不存在則建立它。
- $inc用來增加和已有鍵的值,若該鍵不存在則建立一個鍵。
- 數組修改器$push $ne (條件判斷) $addToSet(可以避免重複) $addToSet和$each 組和起來,可以添加多個不同的值。 $pop $pull
- 數組定位修改器 "." "$"(定位器只更新第一個匹配到的元素)
- upsert是一種特殊的更新。要是沒有匹配的文檔,就會以這個條件和更新文檔為基礎建立一個新的文檔。 update的第三個參數設為true。
- 預設的情況下,更新只能對合格第一個文檔進行更新操作。要是想要更新多個文檔,update的第四個參數設為true
- 返回已更新的文檔 findAndModify()和getLastError查看更新的文檔數
三、查詢
查詢就是返回一個集合中文檔的子集。
1、find()函數介紹
查詢文檔:
當查詢文檔為空白({}),就是返回整個集合。可以向查詢文檔中加入多個索引值對。(對個條件會用and組合在一起)
find({"user_name" : "Joe", "age" : 19, "sex" : "man", ...})
制定返回的鍵:
有時不需要將文檔中所有的鍵-值對都返回。此時可以用find的第二個參數來制定想要顯示的鍵。(1:顯示 0:不顯示)
find({}, {"user_name" : 1, "email" : 1, "_id" : 0})
2、查詢條件
- 比較子 $lt、$lte、$gt、$gte分別對應<、<=、>和>=。如:{"age" : {"$gte" : 18,"lte" : 30}} (18<=age<=30)
- OR查詢
- $in 單一鍵與多個值匹配 {"age" : {"$in" : [12, 13, 17, 30]}}
- $or 多個條件組合和and條件有點區別 {"$or" : [ {"age" : {"$in" : [13, 24, 98]}, {"winner" : true } ]}
- $not 元條件句,可以用在任何條件之上
- 特定於類型的查詢
- $null (1.值為null 2.匹配不存在)
- Regex
- 數組查詢
- $all {"fruit" : {"$all" : ["apple", "banana"]}}
- $size {"fruit" : {"$size" : 3}}
- $slice {"comments" : {"$slice" : 10}} #前10條評論
- 查詢內部文檔
- $eleMatch 將限定條件進行分組,僅當需要對一個內嵌文檔的多個鍵操作時才會用到。
- $where 查詢
- 遊標 資料庫用遊標來返回find執行的結果。
- limit、skip和sort
MongoDB學習筆記(一)