MongoDB
 sql >> Base de données >  >> NoSQL >> MongoDB

MongoDB :la classe java.lang.Double ne peut pas être convertie en classe java.lang.Long

Le problème est probablement que l'un des champs indiqués est en fait stocké en tant que Double au lieu de Long .

Comme vous pouvez le voir dans le code source du Document classe, dans le getLong méthode, vous pouvez trouver ce qui suit :

return (Long) get(key);

Ce casting est celui qui est à l'origine de l'erreur signalée par le pilote Mongo.

Est-il possible que certains de vos horodatages soient créés avec Javascript et NodeJS, peut-être avec le shell Mongo ? Si tel est le cas, selon la façon dont vous créez l'horodatage, la valeur de votre champ peut être insérée en tant que double en raison de la façon dont les nombres sont représentés en Javascript.

La documentation mongo shell indique :

Et :

Le problème a été documenté ici dans SO dans ce question . C'est assez daté, mais cela pourrait être une explication possible de votre problème.

Cet article , bien qu'il soit également assez ancien et non directement lié à votre problème, fournit des informations supplémentaires.