一 安裝正則表達式
1.下載mongodb
$ brew install mongodb數據庫
2.啓動數組
$ mongod --config /usr/local/etc/mongod.confpost
3.鏈接性能
$ mongo rest
二 語法排序
show dbs 查看全部數據庫教程
db.createCollection('col') 建立col集合索引
use DBNAME 建立並切換至某某數據庫
db.dropDatabase() 刪除當前數據庫
db.collection.drop() 刪除集合
show tables 查看全部集合
db.Collection_Name.insert(document) 插入文檔
db.Collection_Name.find() 查看文檔
db.Collection_Name.update(<query>,<update>,{upsert:false 是否插入不存在的數據,multi:false 只更新查到的第一個數據 writeConcern:拋出異常的級別}
db.collection.save(<document>,{writeConcern:級別} save() 方法經過傳入的文檔來替換已有的文檔
db.collection.remove(<query>,{justOne:true 只刪除一個文檔}
db.collection.find().pretty() 查詢集合中的數據
db.col.find({"likes":{$lt:50}}).pretty() 小於
db.col.find({"likes":{$lte:50}}).pretty() 小於等於
db.col.find({"likes":{$gt:50}}).pretty() 大於
db.col.find({"like":{$gte:50}}}.pretty() 大於等於
db.col.find({"likes":{$ne:50}}).pretty() 不等於
AND條件 db.col.find({key1:value1,key2:value2}).pretty()
OR條件 db.col.find({$or:[{key1:value1}, {key2:value2}]}).pretty()
AND OR 組合 db.col.find({"likes":{$gt:50},$or:[{"by":"菜鳥教程"},{"title":"MongoDB 教程"}]}).pretty()
db.col.find({"title":{$type:2}}) $type條件操做符 Double 1; String 2; Object 3;Array 4;Binary data 5; Undefined 6;Object id 7; Boolean 8; Date 9;Null 10; Regular Expression 11; Javascript 13; Symbol 14; Timestamp 17;
db.collection.find().limit(NUMBER) 讀取指定數量的數據記錄
db.col.find({},{"title":1,_id:0}).limit(1).skip(1) 跳過指定的條數,最早執行順序 sort再skip再limit
db.col.find({},{"title":1,_id:0}).sort({"likes":-1}) 1正序;-1倒序
索引 ensureIndex()
db.COLLECTION_NAME.ensureIndex({KEY:1},option) 1爲升序建立索引 -1爲降序建立索引 option可選參數{background:false 防止建立索引會阻塞其餘數據庫操做,將其指定爲true;.......}
db.col.ensureIndex({"title":1,"description":-1}) 能夠設置多個索引
db.values.ensureIndex({open:1,close:1},{background:true})
聚合aggregate()方法用於處理數據,並返回計算後的結果
db.COLLECTION_NAME.aggregate(AGGREGATE_OPERATION)
db.mycol.aggregate([{$group:{_id:"$by_user",num_tutorial:{$sum:"$likes"}}}])
$sum 計算總和; $avg 計算平均值;$min 獲取集合中全部文檔對應的最小值; $max 最大值; $push 在結果文檔中插入值 到 一個數組中;$addToSet 在結果文檔中插入值到一個數組中,但不建立副本;$first 根據資源文檔的排序獲取第一個文檔數據;$last 最後一個文檔數據;
管道 將在一個管道處理完的結果 傳遞給下一個管道處理;表達式:處理輸入文檔並輸出。表達式是無狀態的,只能用於計算當前聚合管道的文檔:
$project 修改輸入文檔的結構;$match 用於過濾數據;$limit 限制聚合管道返回的文檔數;$skip 跳過指定文檔的數量;$unwind 將文檔中的某一個數組類型字段拆分紅多條,每條包含數組中的一個值。$group:將集合中的文檔分組,可用於統計結果;$sort:排序;$geoNear:輸出接近某一地理位置的有序文檔。
分片:存在的另外一種集羣,能夠知足MongoDB數據量大量增加的需求。
備份:mongodump -h dbhost -d dbname -o dbdirectory
恢復數據:mongorestore -h <hostname><:port> -d dbname <path>
監控:/bin $mongostat
$mongotop
關係類型:嵌入式關係--保存在單一的文檔中,比較容易獲取和維護數據,但不斷增大會影響讀寫性能。
引用式關係--把數據文檔和用戶文檔分開,經過文檔的ID字段來創建關係。{"name":"Tom Benzamin","address_ids":[ObjectId("52ffc4a5d85242602e000000"),ObjectId("52ffc4a5d85242602e000001")]}
使用DBRefs:一個文檔衝多個集合中引用文檔。{$ref:.集合名稱. ,$id: ..引用ID..,$db:.數據庫名稱..}
原子操做:MongoDB提供了許多原子操做,好比文檔的保存、修改、刪除。(原子操做:要麼這個文檔保存到mongoDB,要麼沒有保存到MongoDB,不會出現查詢到的文檔沒有保存完整的狀況)
ObjectID 是一個12字節BSON類型數據,前4個字節表示時間戳,3個字節是機器標識碼,2個是進程ID,最後3個字節是隨機數
newObjectId = ObjectId()
new ObjectId().str
正則表達式post_text
db.posts.find({post_text:{$regex:"runoob"}}) 或db.posts.find({post_text:/runoob/}) 或 db.posts.find({post_text:{$regex:"runoob",$options:"$i"}})