2015年1月29日 星期四

[MongoDB]Cursors

Cursors
  Mongodb,讀取資料主要是透過db.collection.find()這個方法,這個方法會回傳collection,
  也會回傳cursor.可利用cursor指定成變數,來存取documents.若沒有宣告變數,則預設回傳20documents.
  EX: 我們在mongodb shell,操作db.mydb.find(),預設回傳20筆資料.
 
Cursors行為
1.      會在用完Cursor時或閒滯10分鐘時,自動關閉Cursor.
2.       可以在查詢中,加上noTimeOut,可必免閒滯10分鐘自動關必Cursor.
var myCursor = db.inventory.find().addOption(DBQuery.Option.noTimeout);
Cursor Batches
    monogoDb中查詢結果是批次回傳,回傳的大小不可以過 maximum BSON document size中的設定.對於大多數查詢,第一批會回傳101document或剛超過1Mbdocument.之後每次回傳4Mb,若要改變這個量容大小,可以由 batchSize() and limit()兩個參數。Cursor可以用Cursor.next()來讀取Cursor迴圈中下一筆document.
db.inventory.find().batchSize(10)
cursor.limit()
Cursor Information
 可透過 db.serverStatus()方法取得Cursor的資訊,包括如下:

1. 自上次重新啟動Server開始,timeOutCursor數量
2. Open Cursor中被設定 DBQuery.Option.noTimeout ,還閒止的數量
3. PinnedOpen Cursor的數量
4. Open Cursor的總數量

db.serverStatus().metrics.cursor
The result is the following document:
{
  "timedOut" : <number>
  "open" : {
"noTimeout" : <number>,
"pinned" : <number>,
"total" : <number>
  }
}

MongoDB Query 語法

MongoDB Query 語法
MongoDB提供 db.collection.find()方法,,查詢資料使用方法如下:




db.users.find(                   -->collection
{age: { $gt:18 } } ,          -->query條件
{name:1, address:1 }  --> db 回傳顯示欄位,1表要顯示 0表除外的顯示
).limit(5)                  -->cursor modifier
轉成SQL語法




SELECT _id,name, address
FROM users
WHERE age>18
LIMIT 5

2015年1月28日 星期三

MogoDB安裝[Linux]

前置作業:

  1. 查詢系統版本位元
 getconf LONG_BIT
64                 //顯示為64位元
圖一
                       
MongoDB安裝步驟


  1. Linux
      1. 解壓縮tar -zxvf mongodb-linux-x86_64-2.6.7.tgz
      2. 建立MONGODB目錄,並將解壓縮後的檔案,COPY到mongodb下
mkdir -p mongodb
cp -R -n mongodb-linux-x86_64-2.6.7/ mongodb

圖二
      1. RUN MongoDb
        1. 建立data directory
mkdir -p /data/db
        1. 確認目錄的權限可讀可寫
      1. 帶起 MongoDb Service
./mongodb/bin/mongod

圖三



      1. MongoDB後台管理 Shell,並連接到default test Db
./mongodb/bin/mongo

圖四
      1. 測試是否連通.

圖五