MongoDB資料庫 基礎知識,mongodb資料庫

來源:互聯網
上載者:User

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(){} }

著作權聲明:本文為博主原創文章,未經博主允許不得轉載。

相關文章

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.