前言:

自學Golang也到了現在,除了繼續深究Golang在許多層面的應用之外.也必須學習一些新的資料庫.
想了一下,就決定拿經常在研討會裡面看到的NOSQL (並不是 NO - SQL 而是 Not-Only SQL )的資料庫 MongoDB來練習一下.
MongoDB比起一般的RDBMS而言,應該算是比較容易了解的.而且對於從手機程式設計開始學習的人可能會更容易上手.
因為 MongoDB本身不斷圍繞著一個資料結構,就是 JSON

MongoDB:

關於:

本身概念相當的簡單,主要分為Database(資料庫), Collection (中文該怎麼翻比較順呢?) 還有就是最基本的資料原件 Document (文件).
這樣如果還不是很容易了解,換這樣來換吧:  

  • DB一樣就是原先RDBMS裡面的資料庫
  • Collection 可以當成一個個的Table
  • Document 可以當成一個個的Record

這樣並不是最好的對比,不過這是一個概念上可以讓人一開始馬上進入的方法.

安裝或使用:

如果要自己架設MongoDB(Mac OS)可以參考一下這裡,或者是去 MongoDB HQ上面申請一個免費的MongoDB (我目前是申請一個免費的資料庫來測試)

使用上需要注意的特點:

  • 由於你的資料欄位最基本是JSON,所以每個Collection 裡面並沒有固定的欄位格式.可以前兩個documents 是有五個欄位,後面卻不是.
  • 關於查詢
    • equal 比較簡單,就是一般JSON語法  { price: 40 } 查詢價錢40元的
    • greater than (大於) 或是 Less than (ls)的時候需要使用   { price: { $gt : 40} } (查詢價錢 大於 45)  (要查小於就是  $lt

Golang上面大家推薦的MongoDB Driver — mgo

其實安裝跟使用相當的簡單,裡面也提供很多好用的方法.不過我在學習的途中有遇到一些問題希望可以幫助大家.

  • Document 的type struct 裡面的資料名稱,不可以全部小寫(lowercase)不然會出現insert到collection 裡面變成空白(empty document except ObjectID).
    • 我本身有在追他的source code但是還看不出是在哪裡有問題.
  • (承上)雖然變數名稱必須有大寫(uppercase)但是到了MongoDB裡面又得用全部小寫(lowercase).在一般的資料庫操作中,這是可以理解的.
  • 關於Query Criteria 的參數
    • 要下greater than 必須用 $gt  範例:  bson.M{"price": bson.M{"$gt": 40}} 找出價錢大於40

基本的查詢與操作都會了之後,接下來要弄到Heroku上面去跟server搭配了. 範例可以到這裡去找 Github …..

參考:


Evan

Attitude is everything