Как получить сообщение об ошибке из scala/java MongoDB api

Я использую 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

Как я могу получить информацию о том, почему вставка не работает? Я не про эту конкретную вставку спрашиваю. Просто, как я могу получить информацию об ошибке, которая привела к сбою вставки?

Спасибо за вашу помощь.


person John Smith Optional    schedule 19.06.2018    source источник


Ответы (1)


Casbah — это оболочка Scala над драйвером Java MongoDB.

mycollection += (builder.result)

переводится на

mycollection.save(builder.result)

Если в операции произошла ошибка, она выдаст исключение, подобное описанному здесь.
Объект WriteResult, содержащий информацию о записи, если не произошло ошибки.

я бы проверил:

  1. getN и isUpdateOfExisting в WriteResult, потому что save выполняет либо обновление, либо вставку (подробнее здесь).

  2. wasAcknowledged в WriteResult, чтобы убедиться, что вы получили исключение, а WriteConcern не установлено на UNACKNOWLEDGED.

person Boaz    schedule 30.08.2018