MongoDB之遊標

stonebox1122發表於2017-08-24
所謂的遊標就是指的資料可以一行一行的進行操作,非常類似與ResultSet資料處理,在MongoDB資料庫裡面,對於遊標的控制非常簡單,只需要使用find()函式就可以返回遊標了。對於返回的遊標,如果要想進行操作,可以使用兩個函式:
  ● 判斷是否有下一行資料:lastNext();
  ● 取出當前資料:next()。

> var cursor=db.emp.find();
> cursor.hasNext();
true
> cursor.next();
{
        "_id" : ObjectId("599294320184ff511bf02b97"),
        "name" : "趙一",
        "sex" : "男",
        "age" : 30,
        "sal" : 1000,
        "loc" : "北京"
}

以上是遊標的操作形式,但是實際上不可能這麼去用,因為必須利用迴圈才能夠輸出內容。

範例:編寫具體的操作程式碼
> var cursor=db.emp.find();
> while (cursor.hasNext()){
... var doc=cursor.next();
... print(doc.name);
... }
趙一
錢二
孫三
李四
週五
吳六
鄭七
王八
劉A
劉B
劉C
劉D
劉E
林A
林B
林C
林D

> var cursor=db.emp.find();
> while (cursor.hasNext()){ var doc=cursor.next(); print(doc); }
[object BSON]
[object BSON]
[object BSON]
[object BSON]
[object BSON]
[object BSON]
[object BSON]
[object BSON]
[object BSON]
[object BSON]
[object BSON]
[object BSON]
[object BSON]
[object BSON]
[object BSON]
[object BSON]
[object BSON]
[object BSON]

相當於每一個資料都單獨拿出來逐行的控制。當遊標資料取出來之後,實際上每行資料返回的都是一個Object型的內容,那麼如果需要將資料按照JSON的形式出現,則可以使用printjson()函式完成。

> var cursor=db.emp.find();
> while (cursor.hasNext()){ var doc=cursor.next(); printjson(doc); }
{
        "_id" : ObjectId("599294320184ff511bf02b97"),
        "name" : "趙一",
        "sex" : "男",
        "age" : 30,
        "sal" : 1000,
        "loc" : "北京"
}

在所有的已知資料庫,只有MongoDB的遊標操作最簡單的,最直觀的。


來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/28536251/viewspace-2144100/,如需轉載,請註明出處,否則將追究法律責任。

相關文章