MongoDB資料庫 基礎知識,mongodb資料庫
1.簡介:
MongoDB 是一個基於分布式檔案儲存體的資料庫。由C++語言編寫。旨在為WEB應用提供可擴充的高效能資料儲存解決方案。
MongoDB 是一個介於關聯式資料庫和非關聯式資料庫之間的產品,是非關聯式資料庫當中功能最豐富,最像關聯式資料庫的。他支援的資料結構非常鬆散,是類似json的bson格式,因此可以儲存比較複雜的資料類型。Mongo最大的特點是他支援的查詢語言非常強大,其文法有點類似於物件導向的查詢語言,幾乎可以實作類別似關聯式資料庫單表查詢的絕大部分功能,而且還支援對資料建立索引。
2.特點:
它的特點是高效能、易部署、易使用,儲存資料非常方便。主要功能特性有:
面向集合儲存,易儲存物件類型的資料。
模式自由,支援動態查詢,支援完全索引,包含內部對象。支援查詢。支援複製和故障恢複。使用高效的位元據儲存,包括大型物件(如視頻等)。自動處理片段,以支援雲端運算層次的擴充性。支援RUBY,PYTHON,JAVA,C++,PHP,C#等多種語言。檔案儲存體格式為BSON(一種JSON的擴充)。可通過網路訪問。
具體介紹可以查看百度百科:
http://baike.baidu.com/subview/3385614/9338179.htm#viewPageContent
3.使用:
(1)安裝::https://www.mongodb.org/downloads,下載適合自己的開發環境的壓縮包,加壓後直接安裝就可以了,很簡單;
(2)建立倉庫、日誌、建立服務:在安裝目錄下建立兩個檔案夾db、log;在cmd中輸入以下命令建立倉庫、日誌、建立服務:
mongod -dbpath “D:\study soft\MongoDB\db” -logpath “D:\study soft\MongoDB\log\mongodb.log” -install -serviceName “MongoDB”
(3)使用mongoVUE工具:
下載安裝(不做介紹了)後,要建立串連,一般只需要寫Name(串連名)和Server(地址:localhost或127.0.0.1)就好了:
建立好後
(4)基本命令:
—–建立集合:
db.createCollection(“集合名”);
—– 刪除集合:
db.集合名.drop();
—– 切換集合:
use 集合名;
—– 添加記錄:
db.集合名.insert({“_id”:1001,”name”:”yyy”,”sex”:”F”});
—–向集合中添加多條記錄
db.集合名.insert([{“_id”:1003,”name”:”天ss天”,”sex”:”男”},{“_id”:1004,”name”:”tt”,”sex”:”男”}]);
—– 查看集合中的資料:
db.集合名.find() db.集合名.findOne() db.集合名.find({"_id":1001}) ---where key=val db.集合名.find({"_id":{"gt":1001}}) ---where key>val db.集合名.find({"_id":{"$lte":1001}}) ---where key<=val db.集合名.find({"_id":{"$ne":1001}}) ---where key!=val
—- $in 在…..中
db.集合名 .find({"_id":{"$in":[1001,1002,1003]}})
—- $or 或
db.集合名.find({"$or":[{"_id":1001},{"name":"haha"}]})
—-$and and or 並且….或…..(性別為男 並且 id為1009 或者姓名為 yc)
db.zy.find({"sex":"男","$or":[{"_id":1009},{"name":"yc"}]})
—– 如果存在則修改,不存在則添加
db.集合名.save({“_id”:1003,”name”:”haha”});
—– 修改
db.集合名.update({條件},{要修改的資料});
—— 修改器
$inc 增加對應的值
db.zy.insert({"_id":1004,"url":"www.baidu.com","pageViews":1}); db.zy.update({"_id":1004},{"$inc":{"pageViews":1}}); --將id為1004的文檔中的pageViews鍵的值增加1
$set 修改對應的值
db.zy.update({"_id":1002},{"name":"明明","sex":"女"}) db.zy.update({"_id":1002},{"$set":{"name":"明明","sex":"男"}})
—- 將company變成一個數組
db.zy.insert({"_id":1005,"company":"yc","url":"www.baidu.com","pageViews":1}); db.zy.update({"_id":1005},{"$set":{"company":["yc","zy","nh"]}})
—刪除鍵:
db.zy.update({"_id":1005},{"$unset":{"company":1}})
—數組修改器:
$push 向數組中添加值,可能會出現重複的值
db.zy.update({"_id":1005},{"$push":{"company":"hhh"}})
$each 迴圈添加
db.zy.update({"_id":1005},{"$push":{"company":{"$each":["aa","bb","cc"]}}})
$slice 指定最大的長度,它的值必須是負數,表示保留最後的n個值
db.zy.update({"_id":1005},{"$push":{"company":{"$each":["aa1","bb2","cc3"],"$slice":-10}}})
$pop 從數組中刪除一個元素 key : 1 從資料末尾開始刪 key : -1 從頭部開始刪
db.zy.update({"_id":1005},{"$pop":{"company":1}})
$pull 從數組中刪除匹配的值
db.zy.update({"_id":1005},{"$pull":{"company":"nh"}})
—-迴圈
for( i=0;i<10;i++){ db.zy.insert({"_id":i,"name":i}) }
註:當不插入_id時,mongodb會自動分配一個ObjectId
—-遊標
var cursor =db.zy.find(); var obj; while(cursor .hasNext()){ obj=cursor.next(); print(obj); }; var cursor =db.zy.find(); cursor .forEach(function(x){ print(x); })
–分頁查詢
db.zy.find().limit(3); ---查前3條 db.zy.find().limit(3).skip(3); ---跳過前3條,查後面的3條
–排序
db.zy.find().sort({"_id":-1}) --- 1為升序 -1 為降序 db.zy.find().sort({"_id":-1,"name":1}) ---第一個相同就按第二個排序
eg:
db.zy.insert({ "_id":1006, "content":"今天天氣怎麼樣??", "comments":[ {"comment":"好","count":0}, {"comment":"很好","count":0}, {"comment":"非常好","count":0}, ] })
—-通過數組下標訪問
db.zy.update({"_id":1006},{"$inc":{"comments.1.count":1}}) db.zy.update({"comments.comment":"很好"},{"$inc":{"comments.$.count":1}}) ----匹配所有的“很好”,讓其對應的count+1 db.zy.update({"comments.comment":"非常好"},{"$set":{"comments.$.comment":"超級好"}}) ----匹配所有的“非常好”,讓其對應的值變為超級好
—-MongoDB預設每次修改只修改一個文檔,如果需要改多條滿足的記錄,需要在後面添加條件{multi:true}
db.zy.update({"comments.comment":"很好"},{"$inc":{"comments.$.count":1}},{multi:true}) db.zy.update({"comments.comment":"很好"},{"$inc":{"comments.$.count":1}},false,true)
(5).資料類型:
null:{“x”:null}
boolean: {“x”:true}
數值: {“x”:3.14} {“x”:3} NumberInt(“3”) NumberLong(“3”)
字串:{“x”:”hello”}
日期:{“x”:new Date()}
Regex:{“x”:/hello/ig}
數組:{“x”:[1,2,3]}
內嵌文檔:{“x”:{“foo”:{bar}}}
對象id: {“x”:ObjectId()}
代碼:{“x”:function(){} }
著作權聲明:本文為博主原創文章,未經博主允許不得轉載。