我正在使用MongoDb。我有一个名为' counter'的集合。我正在尝试检索字段“seq'”的值,该值在MongoDb中存储为double。
首先是' seq'字段增加1,工作正常。如果我在将它转换为字符串后最终打印seq的值,它可以正常工作。它返回一个字符串值。
但是当我尝试使用Long.parseLong()或Long.valueOf()函数解析String值(例如1.0到Long)时,它会抛出错误。
SEVERE:无法将RuntimeException映射到响应, 重新抛出到HTTP容器java.lang.NumberFormatException:For 输入字符串:" 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转换为long,以及解决方案是什么。
注意:
seqObj.get("seq")
会产生BSONObject。 (MongoDb查询)
答案 0 :(得分:1)
我通常会做以下事情:
long l = ((Number) seqObj.get("seq")).longValue();