Noté que el controlador Scala (versión 1.2.1) escribe valores de opción de Ninguno como nulo en el campo correspondiente. Preferiría omitir el campo por completo en este caso. es posible?
Ejemplo
case class Test(foo: Option[String]) persist(Test(None))lleva a
> db.test.find() { "_id": "...", "foo": null }pero quiero lograr
> db.test.find() { "_id": "..." }Cuando usé casbah, creo que mi comportamiento previsto fue el predeterminado.
http://mongodb.github.io/mongo-scala-driver/2.4/bson/macros/
Ahora puedes usar macros para ello:
val testCodec = Macros.createCodecProviderIgnoreNone[Test]()y en conf codec:
lazy val codecRegistry: CodecRegistry = fromRegistries(fromProviders(testCodec))Abrió una solicitud de función en el rastreador de errores de mongodb ( https://jira.mongodb.org/browse/SCALA-294 ), que fue respondida por Ross Lawley. Sugiere cambiar el código de conversión (de clase de caso a documento) de
def toDocument(t: Test) = Document("foo" -> t.foo)a algo como
def toDocument(t: Test) = { val d = Document() t.foo.foreach{ value => d + ("foo" -> value) } d }