sql >> Base de Datos >  >> NoSQL >> MongoDB

MongoDB:la clase java.lang.Double no se puede convertir a la clase java.lang.Long

El problema probablemente es que cualquiera de los campos indicados en realidad se almacena como Double en lugar de Long .

Como puede ver en el código fuente del Document clase, en el getLong método puede encontrar lo siguiente:

return (Long) get(key);

Este lanzamiento es el que está causando el error informado por el controlador Mongo.

¿Es posible que algunas de sus marcas de tiempo se creen con Javascript y NodeJS, quizás con Mongo Shell? Si ese es el caso, dependiendo de cómo cree la marca de tiempo, el valor de su campo podría insertarse como double debido a la forma en que se representan los números en Javascript.

La documentación de mongo shell indica :

Y :

El problema se ha documentado aquí en SO en este pregunta . Está bastante anticuado, pero podría ser una posible explicación de su problema.

Este artículo , aunque también está bastante anticuado y no está directamente relacionado con su problema, proporciona algunos antecedentes adicionales.