sql >> Databáze >  >> NoSQL >> MongoDB

MongoDB:třídu java.lang.Double nelze přetypovat do třídy java.lang.Long

Problém je pravděpodobně v tom, že kterékoli z uvedených polí je ve skutečnosti uloženo jako Double místo Long .

Jak můžete vidět v zdrojový kód Document třídy v getLong můžete najít následující:

return (Long) get(key);

Toto přetypování je příčinou chyby hlášené ovladačem Mongo.

Je možné, že některá z vašich časových razítek jsou vytvořena pomocí Javascriptu a NodeJS, možná pomocí prostředí Mongo? Pokud tomu tak je, v závislosti na tom, jak vytvoříte časové razítko, může být hodnota vašeho pole vložena jako double kvůli způsobu, jakým jsou čísla reprezentována v JavaScriptu.

Mongo shell uvádí dokumentace :

A :

Problém byl zdokumentován zde v SO v tomto otázka . Je to docela zastaralé, ale mohlo by to být možné vysvětlení vašeho problému.

Tento článek , i když je také poměrně zastaralý a přímo nesouvisí s vaším problémem, poskytuje další pozadí.



  1. Výjimka časového limitu soketu v Mongo

  2. nemůže získat přístup k vlastnostem req.user

  3. Nelze se připojit k místnímu (běžícímu) mongo pomocí „meteor mongo“

  4. Vyplnění Ref ve schématu mongoose při práci s Graphql