【问题标题】:How to get error message from the scala/java MongoDB api如何从 scala/java MongoDB api 获取错误消息
【发布时间】:2018-06-19 16:28:30
【问题描述】:

我正在使用 Casbah(mongodb scala 库)。我有一个不工作的插入。

val builder = MongoDBObject.newBuilder
builder += "_id" -> token.uuid
builder += "email" -> token.email
builder += "creationTime" -> token.creationTime
builder += "expirationTime" -> token.expirationTime
builder += "isSignUp" -> token.isSignUp
val writeResult = mycollection += (builder.result)

如果我将其更改为更简单的内容(例如,简单的 {"hello": "world"} 文档),则插入完成。所以我知道有些东西不适用于这个特定的插入。但是,我没有办法知道为什么。我想从 Mongo 或 Casbah 那里得到一些反馈。

然而,WriteResult 类显然直接来自 Java MongoDB 驱动程序,看起来非常不透明:http://api.mongodb.com/java/3.0/com/mongodb/WriteResult.html

如何获取有关插入失败原因的一些信息?我不是在问这个特定的插入。只是,一般来说,我如何才能获取有关导致插入失败的错误的信息?

感谢您的帮助。

【问题讨论】:

    标签: java mongodb scala logging casbah


    【解决方案1】:

    Casbah 是 Java MongoDB 驱动程序的 Scala 包装器。

    mycollection += (builder.result)
    

    被翻译成

    mycollection.save(builder.result)
    

    如果操作有错误,它将抛出类似here 描述的异常。
    如果没有发生错误,WriteResult 包含有关写入的信息。

    我会检查:

    1. getNisUpdateOfExisting 值在 WriteResult 中,因为 save 正在执行更新或插入(阅读更多 here)。

    2. WriteResult 中的wasAcknowledged 值,以确保您获得异常并且您没有将WriteConcern 设置为UNACKNOWLEDGED

    【讨论】:

      猜你喜欢
      • 2019-10-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-08-17
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多