MongoDB
 sql >> Base de Dados >  >> NoSQL >> MongoDB

MongoDB:a classe java.lang.Double não pode ser convertida na classe java.lang.Long


O problema provavelmente é que qualquer um dos campos indicados é realmente armazenado como Double em vez de Long .

Como você pode ver no código-fonte do Document classe, no getLong método, você pode encontrar o seguinte:
return (Long) get(key);

Este elenco é o que está causando o erro relatado pelo driver do Mongo.

É possível que alguns de seus timestamps sejam criados com Javascript e NodeJS, talvez com o shell Mongo? Se for esse o caso, dependendo de como você cria o timestamp, o valor do seu campo pode ser inserido como double devido à forma como os números são representados em Javascript.

O shell mongo a documentação indica :

E :

O problema foi documentado aqui no SO neste pergunta . É bastante datado, mas pode ser uma possível explicação para o seu problema.

Este artigo , embora também bastante datado e não diretamente relacionado ao seu problema, fornece algumas informações adicionais.