2015-07-05 39 views
0

DBOBJECT在官方Casbah guide on querying它說卡斯巴返回,而不是MongoDBObject

findOne返回一個選擇 - 要麼有些(MongoDBObject)或無

然而,findOne居然給了我一個Option搭配素色Some(DBObject)改爲:

scala> MongoClient("localhost", 27017)("db")("collection").findOne() 

res0: Option[com.mongodb.DBObject] = Some({ "_id" : { "$oid" : "559860491b07c0dc5b52f3ee"} , "description" : "Some text" }) 

同樣的情況發生在find,它會通過DBObject實例返回一個迭代器。經過幾個小時的搜索和抓撓我的頭,我很茫然。

這是怎麼回事?我仍然在學習Scala,因此可能會有一些細微差別,我沒有得到。

+0

的例子在[教程](http://api.mongodb.org/scala/casbah/2.0/ tutorial.html)返回普通的'DBObject's,所以這可能只是文檔中的錯誤?我認爲casbah提供了'DBObject'和'MongoDBObject'之間的隱式(自動)轉換 - 參見[here](https://osdir.com/ml/mongodb-user/2011-02/msg02745.html)和[here] (http://api.mongodb.org/scala/casbah/2.0/tutorial.html#mongodbobject-a-scala-ble-dbobject-implementation) – DNA

+0

你是對的,謝謝!我錯過的是'com.mongodb.casbah.Imports._'的導入,隱式轉換在那之後工作。我希望他們能夠在指南中做得更清楚。 – James

+0

太棒了! - 我會添加一個答案... – DNA

回答

1

本教程中的示例返回純DBObject s,所以我認爲這只是文檔中的一個錯誤。

卡斯巴提供DBObjectMongoDBObject之間的隱含的(自動)轉換 - 如下所述:

有一個隱式轉換加載可以皮條客任何DBOBJECT作爲MongoDBObject

我們自動提供轉換DBOBJECT到 MongoDBObject隱式方法。只要運行導入,任何需要MongoDBObject的方法都會接受一個 DBObject。

您將需要導入轉換這個工作,使用:

import com.mongodb.casbah.Imports._