99热99这里只有精品6国产,亚洲中文字幕在线天天更新,在线观看亚洲精品国产福利片 ,久久久久综合网

歡迎加入QQ討論群258996829
麥子學院 頭像
蘋果6袋
6
麥子學院

MongoDB數(shù)據(jù)庫基本操作總結

發(fā)布時間:2016-08-13 22:53  回復:0  查看:2698   最后回復:2016-08-13 22:53  
0.目標

熟悉命令行中對MongoDB的一些基本操作,為接下來Node.js操作MongoDB做準備。

如果你曾經(jīng)學習或接觸過關系型數(shù)據(jù)庫(如MySQL、SQLServer等),那么在閱讀此文時,可自行做以下對應:

Table(表) -> Collection(集合)

Log(記錄) -> Document(文檔)

當然,這種對應并不確切,因為Table(表)的結構是固定的,而Collection(集合)則不然;Log(記錄)的,而Document(文檔)的結構則更多樣化。不過對初學者而言,這樣的比喻可以更快地上手;事實上,文檔型數(shù)據(jù)庫MongoDB的結構、操作也確實和關系型數(shù)據(jù)庫(如MySQL)很像。

如果你從未學習過數(shù)據(jù)庫,那么建議你先對非關系型數(shù)據(jù)庫這個概念有一個理解后,再來看本文。廢話不多說,我們馬上來學習MongoDB


1.連接數(shù)據(jù)庫

連接數(shù)據(jù)庫之前,請先確認是否已經(jīng)開啟MongoDB服務。具體方法請參考上一節(jié)說明。

mongodb所在目錄下打開命令行,進入mongodb\\bin,輸入命令 mongo

C:\\mongodb\\bin>mongo

MongoDB數(shù)據(jù)庫基本操作總結


進入MongoDB


2.切換數(shù)據(jù)庫

默認shell連接的是本機的localhosttest庫,在上面圖片中可以看出,當前正在使用的數(shù)據(jù)庫(connecting to:)是“test”

如果要切換數(shù)據(jù)庫,可以輸入下面命令

use mydb

上面的mydb即要切換的數(shù)據(jù)庫名稱


3.插入一條記錄

切換到數(shù)據(jù)庫myfirstdb

use myfirstdb

MongoDB數(shù)據(jù)庫基本操作總結


切換數(shù)據(jù)庫

創(chuàng)建對象a,b,并分別保存

// 創(chuàng)建對象a,b

a = {name : "user1"};

b = {name : "user2"};

// 保存對象a,b

db.user.save(a);

db.user.save(b);

MongoDB數(shù)據(jù)庫基本操作總結


執(zhí)行結果

用可視化工具查看結果

MongoDB數(shù)據(jù)庫基本操作總結


MongoCola查看結果

注意到,我們在這之前根本沒有創(chuàng)建過名叫myfirstdb的數(shù)據(jù)庫,也沒有創(chuàng)建過名叫user的集合,但為什么命令依然能夠執(zhí)行、并且得到我們預期的結果?這是因為MongoDB作為文檔型數(shù)據(jù)庫,它是無表結構的數(shù)據(jù)庫,它不需要預先定義表結構。

正是這個特性,MongoDB擁有比關系型數(shù)據(jù)庫更快的處理速度;另外,它還減少了添加字段等表結構變更所需要的開銷。這樣,我們就不必再去關心表結構和程序之間的一致性問題;簡單來說,就是你在程序中添加一個字段時,不必考慮數(shù)據(jù)庫是否有這個字段,因為MongoDB會自動為你創(chuàng)建。


4.插入一條復雜一點的記錄

c = {name : "user2", card:"KK8566"};

db.user.save(c);

在這里,我們增加了一個字段”card”,這在之前是不存在的,那么執(zhí)行情況如何呢?

先看控制臺

MongoDB數(shù)據(jù)庫基本操作總結


再看可視化管理工具

MongoDB數(shù)據(jù)庫基本操作總結


MongoCola查看結果

已經(jīng)自動生成了一個card字段。


5.修改記錄

上一個例子中,我們看到有兩個”user2”,我們現(xiàn)在要把最后一個改為”user3”

db.user.update( {name:"user2", card:"KK8566"}, {$set:{name:"user3", card:"KK8566"} } );

修改結果:

MongoDB數(shù)據(jù)庫基本操作總結


修改結果

MongoDB數(shù)據(jù)庫基本操作總結


MongoCola查看結果


6.刪除記錄

我們刪除第一個文檔

db.user.remove( {name : "user1" } )

MongoDB數(shù)據(jù)庫基本操作總結


刪除

MongoDB數(shù)據(jù)庫基本操作總結


MongoCola查看結果


7. 查詢記錄

列出所有記錄

db.user.find();

MongoDB數(shù)據(jù)庫基本操作總結


可以看到,在上一小節(jié)我們執(zhí)行的刪除命令,數(shù)據(jù)庫里僅剩兩個文檔。

使用while來輸出

var cursor = db.user.find();

while(cursor.hasNext())    printjson( cursor.next());

MongoDB數(shù)據(jù)庫基本操作總結


通過while來批量輸出

轉為數(shù)組

var arr = db.user.find().toArray();

arr[1];    // 顯示第1個

MongoDB數(shù)據(jù)庫基本操作總結


數(shù)組

事實上,我們在Node.js的服務器端操作MongoDB時,也是使用類似的方式。


8.條件查詢

MongoDB查詢語句來實現(xiàn)MySQL的條件查詢語句:SELECT * FROM user WHERE NAME=”user3”

db.user.find( { name : "user3" } ).forEach( printjson);

MongoDB數(shù)據(jù)庫基本操作總結


條件查詢

上面的命令將會返回所有滿足條件的文檔,為了節(jié)省開銷,還可以使用findOne()來得到滿足條件的第一個文檔:

db.user.findOne( { name : "user3" } );

注意,這里僅僅是一個簡單的條件限制。我們在實際應用中,會有很多很復雜的需求;在MySQL中,我們會使用多個ANDOR來表示與和或的關系。在MongoDB中,也有類似ANDOR的關鍵字,但MongoDB中,一切都是用類似Json的格式來表達的。具體操作我會在后續(xù)文章中做詳細介紹,歡迎閱讀。


9.限制結果集數(shù)量

在查詢語句后面加上limit(num)即可

db.user.find().limit(3);    // 限制為3個文檔

至此,MongoDB基礎的操作就這么多了,還有一些更高級的操作,將在后續(xù)文章中列出



原文來自:簡書/Mike的讀書季

您還未登錄,請先登錄

熱門帖子

最新帖子

?