MongoDB
 sql >> база данни >  >> NoSQL >> MongoDB

MongoDB:клас java.lang.Double не може да бъде прехвърлен към клас java.lang.Long

Проблемът вероятно е, че някое от посочените полета всъщност се съхранява като Double вместо Long .

Както можете да видите в изходен код на Document клас, в getLong можете да намерите следното:

return (Long) get(key);

Това предаване е това, което причинява грешката, докладвана от драйвера Mongo.

Възможно ли е някои от вашите времеви марки да са създадени с Javascript и NodeJS, може би с обвивката на Mongo? Ако случаят е такъв, в зависимост от това как създавате клеймото за време, стойността на вашето поле може да бъде вмъкната като double поради начина, по който числата са представени в Javascript.

Mongo shell документацията показва :

И :

Проблемът е документиран тук в SO в този въпрос . Доста е остаряло, но може да е възможно обяснение на вашия проблем.

Тази статия , въпреки че също е доста остарял и не е пряко свързан с вашия проблем, предоставя допълнителна предистория.



  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. MongoDB 4.0 транзакции:ACID четене + запис?

  2. Какво може да се направи с Mongo Aggregation / Изпълнение на Mongo Aggregation

  3. Spring Data MongoRepository Запазване на обекти с различен брой полета

  4. Върнете действителния тип на поле в MongoDB

  5. Mongo shell изпълнява заявка от файл и показва резултат