【问题标题】:Casbah returns DBObject instead of MongoDBObjectCasbah 返回 DBObject 而不是 MongoDBObject
【发布时间】:2015-07-05 07:52:42
【问题描述】:

在官方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,所以可能会有一些我没有理解的细微差别。

【问题讨论】:

  • tutorial 中的示例返回普通的DBObjects,所以这可能只是文档中的错误?而且我认为 casbah 提供了 DBObjectMongoDBObject 之间的隐式(自动)转换 - 请参阅 herehere
  • 你说得对,谢谢!我错过的是com.mongodb.casbah.Imports._ 的导入,之后隐式转换起作用。我有点希望他们能在指南中更清楚地说明这一点。
  • 太棒了! - 我会添加这个作为答案......

标签: mongodb scala casbah


【解决方案1】:

教程中的示例返回纯DBObjects,所以我认为这只是文档中的一个错误。

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

加载了一个隐式转换,可以将任何 DBObject 拉皮条作为 MongoDBObject

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

您需要导入转换才能使其工作,使用:

import com.mongodb.casbah.Imports._

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-12-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-06-04
    • 1970-01-01
    相关资源
    最近更新 更多