分類
系統技術

使用play-with-docker快速建立mongodb測試環境

使用 play with docker: https://play-with-docker.com 可以快速建立 docker container 環境, 每次可以使用 4個小時, 供測試驗證應用.

進入 play with docker 後, 使用以下指令進行 mongodb 的建立:

docker run --name some-mongo -d mongo

當然因為沒有 mongo 的 image, 所以會進行 pull, 並發起一個 container 執行 mongodb.

接下來可以使用 docker ps 來檢查是否已正常執行.

若要進入該 instance 裡, 可以使用以下指令:

docker exec -it some-mongo /bin/bash

就可以進行該 mongo instance 中的 bash 中, 進入 db 的 shell , 可以再下指令: mongo, 即可正常進入該 mongodb 的 shell 中, 接下來就可以使用大家熟悉的 mongo 指令, 如:

use [db_name]
db.createCollection(“[collection_name]”)
db.[collection_name].insert({xxx})

等指令.

分類
Database

MongoDB的管理工具-Robo 3T

無論是使用 mlab 的 mongdb 線上資料庫, 或是自建的 mongodb 環境, 都需要一個方便的操作管理工具, 可以使用這個好用的 robomongo 的 Robo 3T 工具, 官方連結:

https://robomongo.org/

它是一個 open source 的工具, 用來存取 mongodb, github 連結:

https://github.com/Studio3T/robomongo

同時有 Windows (install, portable), Mac, Linux 三種版本可供使用, 十分方便, 介面操作也很直覺容易, 是在使用 mongodb 的好用工具.

分類
PHP

MongoDB使用PHP查找特定欄位是否存在

由於 MongoDB 是一種 schema-free 的資料庫, 使用 Document 為基礎的存放方式, 所以若是想要查找特定欄位是否存在的語法就很重要了, 先來看看官方的資料:

https://docs.mongodb.com/manual/reference/operator/query/exists/

語法是使用 $exists 的方式來判定特定欄位是否存在, 若要轉為 php 語法的話, 可以使用如下:

$cursor= $collection->find([ "field1" => [ '$exists' => false ] ]);

來列出在 collection 中 field1 不存在的資料, 這對於使用特定欄位做為處理資料或作業資料來說, 可以方便地判斷, 也不用預先開好欄位, 很方便實用的一個用法.

分類
Javascript

像Firebase的雲端即時資料庫-deployd

之前對於 Firebase 的時互動性有很強烈的應用想法, 主要是像類似線上聊天室的應用需求, 可以透過線上指令直接做控制客戶端的介面與功能操作, 接下來就想找一些類似的平台來做這件事.

其實背後應該都是走 socket.io 才能有這麼好的即時性與效果, 再加上同步性的資料庫, 哪個是最方便適合的呢? 有一些討論在這裡:

https://www.quora.com/Whats-the-closest-open-source-alternative-to-Firebase

接下來來看看這個好用的 deployd 服務, 他組合了 node.js / socket.io / mongodb 服務, 將這樣一個像 Firebase 的功能實作出來了, 並且也有很強大的管理介面功應用, 把資料庫操作, 即時性, 資料驗證與事件整理的十分簡捷方便, 要快速的建立出一組即時同步資料庫, 似乎就是這些最快了, 來看看他的影片介紹, 相信很快就能上手:

https://www.youtube.com/watch?v=I_Jq1BVj6D0

(影片引用自: https://www.youtube.com/watch?v=I_Jq1BVj6D0)

另外, 下面還有許多案例可供參考應用, 即時互動功能, 隨時建立, 隨時開發, 十分方便.

http://docs.deployd.com/examples/

以下為建立測試環境的方式:

  1. windows, 直接下載安裝包: https://bintray.com/artifact/download/deployd/dpd-win-installer/deployd-win-0.8.0.exe
  2. mac / 其他 linux 環境: https://github.com/deployd/deployd#install-from-npm 從 npm 開始

下面將要說明一個從頭開始的方式:

1. 準備一台主機, 這裡以 CentOS 為例, 可以利用 digital ocean 建立一台主機, 若還沒有帳號, 可以從這裡取得: https://diary.tw/archives/1434

2. 建立完成後, 開始安裝 nodejs 與 npm, 指令如下: (其中 epel-release 是為了安裝 nodejs的前置作業, 將 epel-release 資料庫安裝進來)

yum install epel-release
yum install nodejs
yum install npm

3. 接下來安裝 mongodb-server :

yum install mongodb-server

4. 最後安裝 deployd (使用 npm 安裝即可)

npm install deployd -g

5. 起動 mongodb-server

service mongod start

若希望之後重新開機也可以啟動, 可以再下:

chkconfig mongod on

接下來建立一個 deployd 應用程式專案,

cd /home
mkdir dev
cd dev
dpd create hello
cd hello
dpd

就建立完成一個空的專案了, 訪問: http://[ip]:2403/dashboard 即可順利看到已啟動的專案.