MongoDB的安裝及CURD操作

shy丶gril發表於2016-05-23

MongoDB的下載地址:http://www.mongodb.org/downloads MongoDB有32bit和64bit兩個版本,32bit只能存放2GB資料。我們選擇64bit版進行下載。

下載完成之後就行安裝。不再贅述。

 

啟動MongoDB伺服器

開啟windows命令列,進入安裝目錄:

image

然後,使用命令 mongod –-dbpath d:mongodbdb 啟動伺服器:

image

當伺服器啟動以後,我們的檔案系統如下:

image

連線MongoDB伺服器

使用命令 mongo 連線伺服器:

image

此時連線的是我們本機的MongoDB,可以看到當前MongoDB的版本號,以及連線的資料庫名稱。

指定遠端伺服器:

mongo 192.168.1.200

指定遠端伺服器、埠號:

mongo 192.168.1.200:27017

指定遠端伺服器、埠號、資料庫:

mongo 192.168.1.200:27017/mydb

指定遠端伺服器、埠號、資料庫、使用者名稱、密碼(未測試):

mongo 192.168.1.200:27017/mydb –u user –p password

在連線伺服器之後,我們就可以進行CURD操作了。

資料庫資訊

使用命令db檢視當前使用的資料庫

image

使用use命令切換資料庫。MongoDB的資料庫在使用前不需要建立,直接use就可以了。資料表也是這樣。

image

基本概念

文件:文件是一組鍵值對,可以理解為資料行。例如:

{name:”Tom”, age:12}

集合:集合是一個文件的集合,可以理解為資料表。集合存在於資料庫中,且集合中的文件可以擁有不同的結構。

資料庫:資料庫是一個集合的物理容器,MongoDB的資料庫對應到自己設定的檔案系統上面。

 

插入操作(insert)

在插入資料的時候,我們首先要選擇要插入的集合。例如要將資料插入的user集合中,那麼我們可以使用如下命令:

db.user.insert({name:”Tom”, age:12})

執行效果如圖:

image

集合中的文件可以有用不同的結構,例如我們也可以把下面的文件插入到user集合中:

db.user.insert({name:”Jerry”, sex:0})

批量插入:

var list = [{name:”Jack”, age:13}, {name:”Lucy”, age:12}]; 

db.user.insert(list);

執行效果如圖:

image

查詢操作

使用find進行查詢:

db.user.find()

目前我們的集合中有四行資料,不帶引數的時候會返回所有文件:

image

我們會看到文件中有一個_id欄位,這是MongoDB自動生成的,用來標記文件唯一性的,我們也可以自己指定這個值。

引數查詢

轉自一線碼農:《8天學通MongoDB》系列

日常開發中,我們玩查詢,玩的最多的也就是二類:

     ①: >, >=, <, <=, !=, =。

     ②:And,OR,In,NotIn

這些操作在mongodb裡面都封裝好了,下面就一一介紹:

    <1>”$gt”, “$gte”, “$lt”, “$lte”, “$ne”, “沒有特殊關鍵字”,這些跟上面是一一對應的,舉幾個例子。

12cff53n

<2> “無關鍵字“, “$or”, “$in”,”$nin” 同樣我也是舉幾個例子

weodpedk

<3> 在mongodb中還有一個特殊的匹配,那就是“正規表示式”,這玩意威力很強的。

fakzl5tr

<4> 有時查詢很複雜,很蛋疼,不過沒關係,mongodb給我們祭出了大招,它就是$where,為什麼這麼說,是因為$where中的value

  就是我們非常熟悉,非常熱愛的js來助我們一馬平川。

5t11qtdt

更新操作

使用update進行更新,更新的引數有三個,第一個是更新條件,第二個是新的文件,第三個是更新的選項,可以忽略。

例如我們要更新Tom的年齡:

db.user.update({name:”Tom”}, {name:”Tom”, age:15})

執行結果如下:

image

注意,這種更新是完整的更新,如果不給出name的值,將會把name欄位刪除掉。下面的內容來自一線碼農:

<1> 整體更新

         不知道大家可還記得,我在上一篇使用update的時候,其實那種update是屬於整體更新。

sg3s3btv

<2> 區域性更新

        有時候我們僅僅需要更新一個欄位,而不是整體更新,那麼我們該如何做呢?easy的問題,mongodb中已經給我們提供了兩個

   修改器: $inc 和 $set。

①  $inc修改器

       $inc也就是increase的縮寫,學過sql server 的同學應該很熟悉,比如我們做一個線上使用者狀態記錄,每次修改會在原有的基礎上

    自增$inc指定的值,如果“文件”中沒有此key,則會建立key,下面的例子一看就懂。

psaliv1x

② $set修改器

      啥也不說了,直接上程式碼

s2h42pvv

<3> upsert操作

     這個可是mongodb創造出來的“詞”,大家還記得update方法的第一次引數是“查詢條件”嗎?,那麼這個upsert操作就是說:如果我

沒有查到,我就在資料庫裡面新增一條,其實這樣也有好處,就是避免了我在資料庫裡面判斷是update還是add操作,使用起來很簡單

將update的第三個引數設為true即可。

dfo0zmrd

<4> 批量更新

     在mongodb中如果匹配多條,預設的情況下只更新第一條,那麼如果我們有需求必須批量更新,那麼在mongodb中實現也是很簡單

的,在update的第三個引數中,講multi設定為true:

db.user.update({},{$inc:{age:1}},{multi:true})

刪除操作

直接使用remove進行刪除,如果不帶引數,則會提示需要一個引數:

image

也就是說remove操作必須要帶一個引數,例如我們要刪除user中的所有資料,我們可以使用下面的命令:

db.user.remove({})

執行效果如圖:

image

 

本文參考並轉自一線碼農:《8天學通MongoDB》系列

本文發表在 http://www.qeefee.com/article/000558

如果認為此文對您有幫助,別忘了支援一下哦!

作者:齊飛
宣告:本部落格原創文字只代表本人工作中在某一時間內總結的觀點或結論,與本人所在單位沒有直接利益關係。非商業,未授權,貼子請以現狀保留,轉載時必須保留此段宣告,且在文章頁面明顯位置給出原文連線。
轉載:http://www.cnblogs.com/youring2/p/4892282.html


相關文章