我正在使用MongoDb。我有一個名爲'counter'的集合。我試圖檢索字段'seq'的值,該字段在MongoDb中以double形式存儲。Java:解析長引發錯誤
首先'seq'字段的值增加1,這很好。如果我最終將seq的值轉換爲字符串後,它的工作正常。它返回一個字符串值。
但是,當我嘗試使用Long.parseLong()或Long.valueOf()函數將字符串值(如1.0)解析爲Long時,它會引發錯誤。
重度:所述的RuntimeException不能被映射到一個響應, 再投擲到HTTP容器java.lang.NumberFormatException:對於 輸入字符串: 「47.0」
public long getNextSeq(){
DBCollection coll = getCollection(getDb(DB_NAME), "counters");
coll.update(new BasicDBObject().append("_id","blogId"), new BasicDBObject().append("$inc",new BasicDBObject("seq",1)));
DBObject seqObj = coll.findOne();
String seqStr = seqObj.get("seq").toString();
long seq = Long.valueOf(seqStr);
return seq;
}
所以我想知道爲什麼我無法將這個47.0長時間轉換,以及解決方案是什麼。
注意: seqObj.get("seq")
會產生BSONObject。 (MongoDB的查詢)
你試過'DBOBJECT seqObj = coll.findOne(); long seq = seqObj.getLong(「seq」);'? – chridam 2015-03-03 13:56:54
@chridam我不認爲你可以使用long seq = seqObj.getLong(「seq」)。 getLong()不存在。 – StackPointer 2015-03-03 13:58:37
請參閱[documentation](http://api.mongodb.org/java/2.8.0/org/bson/BasicBSONObject.html#getLong(java.lang.String))。你試過了嗎? – chridam 2015-03-03 14:00:53