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:\mongodb\db 啟動伺服器:

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

相關文章