我正在使用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