MongoDB
 sql >> Datenbank >  >> NoSQL >> MongoDB

MongoDB:Klasse java.lang.Double kann nicht in Klasse java.lang.Long umgewandelt werden

Das Problem ist wahrscheinlich, dass eines der angegebenen Felder tatsächlich als Double gespeichert ist statt Long .

Wie Sie im Quellcode des Document Klasse, in getLong Methode finden Sie Folgendes:

return (Long) get(key);

Diese Besetzung verursacht den vom Mongo-Treiber gemeldeten Fehler.

Ist es möglich, dass einige Ihrer Zeitstempel mit Javascript und NodeJS erstellt wurden, vielleicht mit der Mongo-Shell? Wenn dies der Fall ist, könnte der Wert Ihres Felds je nachdem, wie Sie den Zeitstempel erstellen, als double eingefügt werden aufgrund der Darstellung von Zahlen in Javascript.

Die Mongo-Shell Dokumentation gibt an :

Und :

Das Problem wurde hier in SO in diesem Frage . Es ist ziemlich veraltet, aber es könnte eine mögliche Erklärung für Ihr Problem sein.

Dieser Artikel , obwohl ebenfalls ziemlich veraltet und nicht direkt mit Ihrem Problem zusammenhängend, liefert einige zusätzliche Hintergrundinformationen.