Casbah返回DBObject而不是MongoDBObject

时间:2015-07-05 07:52:43

标签: mongodb scala casbah

在官方Casbah guide on querying中说

  

findOne返回一个选项 - Some(MongoDBObject)或None

但是,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所以可能会有一些我没有得到的细微差别。

1 个答案:

答案 0 :(得分:1)

本教程中的示例返回普通DBObject,因此我认为这只是文档中的错误。

Casbah在DBObjectMongoDBObject之间提供隐式(自动)转换 - 如下所述:

  

加载了隐式转换,可以将任何DBObject Pimp为MongoDBObject

  

我们自动提供将DBObject转换为的隐式方法   MongoDBObject。任何需要MongoDBObject的方法都会接受   只要您运行导入,DBObject就可以了。

您需要使用以下内容导入转换才能生效:

import com.mongodb.casbah.Imports._