sql >> Database teknologi >  >> NoSQL >> MongoDB

MongoDB:klasse java.lang.Double kan ikke castes til klasse java.lang.Long

Problemet er sandsynligvis, at ethvert af de angivne felter faktisk er gemt som Double i stedet for Long .

Som du kan se i kildekode af Document klasse i getLong metode kan du finde følgende:

return (Long) get(key);

Denne cast er den, der forårsager fejlen rapporteret af Mongo-driveren.

Er det muligt, at nogle af dine tidsstempler er oprettet med Javascript og NodeJS, måske med Mongo-skallen? Hvis det er tilfældet, afhængigt af hvordan du opretter tidsstemplet, kan værdien af ​​dit felt indsættes som double på grund af den måde, tal er repræsenteret på i Javascript.

Mongo-skallen dokumentationen indikerer :

Og :

Problemet er blevet dokumenteret her i SO i denne spørgsmål . Det er ret forældet, men det kunne være en mulig forklaring på dit problem.

Denne artikel , selvom det også er ret dateret og ikke direkte relateret til dit problem, giver det noget ekstra baggrund.



  1. DAO og afhængighedsindsprøjtning, rådgivning?

  2. Mongo konverter indlejret dokument til array

  3. Mongoose:findOneAndUpdate returnerer ikke opdateret dokument

  4. MongoDB:Hent kun dokumenter oprettet inden for de sidste 24 timer?