sql >> Database >  >> NoSQL >> MongoDB

MongoDB:class java.lang.Double kan niet worden gecast naar class java.lang.Long

Het probleem is waarschijnlijk dat elk van de aangegeven velden daadwerkelijk is opgeslagen als Double in plaats van Long .

Zoals je kunt zien in de broncode van het Document klasse, in de getLong methode vindt u het volgende:

return (Long) get(key);

Deze cast is degene die de fout veroorzaakt die is gemeld door de Mongo-driver.

Is het mogelijk dat sommige van uw tijdstempels zijn gemaakt met Javascript en NodeJS, misschien met de Mongo-shell? Als dat het geval is, kan de waarde van uw veld, afhankelijk van hoe u de tijdstempel maakt, worden ingevoegd als double vanwege de manier waarop getallen worden weergegeven in Javascript.

De mongo-shell documentatie geeft aan :

En :

Het probleem is hier in SO gedocumenteerd in deze vraag . Het is nogal gedateerd, maar het zou een mogelijke verklaring voor je probleem kunnen zijn.

Dit artikel , hoewel ook behoorlijk gedateerd en niet direct gerelateerd aan uw probleem, biedt het wat extra achtergrondinformatie.



  1. Zoeken in volledige tekst met gewicht in mangoest

  2. Apache HBase-schrijfpad

  3. Geografisch gedistribueerde MongoDB-replicasets voor 100% uptime

  4. Kan ik $project gebruiken om een ​​veld te retourneren als het document op het hoogste niveau in een mongo-aggregatiequery?