使用组聚合时,数据类型从Int变为Float

| 我正在尝试使用组聚合。 我的mongodb中具有以下结构的文档:
{ \"_id\" : ObjectId(\"4ddcdc9ab4d8a3a90345508e\"), \"vehicleId\" : \"1\", \"timestamp\" : ISODate(\"2011-05-25T10:40:25.856Z\"), \"speed\" : 1 }

{ \"_id\" : ObjectId(\"4ddcdc9ab4d8a3a90345508f\"), \"vehicleId\" : \"2\", \"timestamp\" : ISODate(\"2011-05-25T10:40:26.232Z\"), \"speed\" : 2 }
在测试中,我想获取每个VehicleId的最新速度,即 执行以下操作:
val key = MongoDBObject(\"vehicleId\" -> true)
val cond = MongoDBObject.empty
val initial = MongoDBObject(\"timestamp\" -> 0)

val reduce =
  \"\"\"function(doc, prev) {
       if (doc.timestamp > prev.timestamp) {
          prev.speed = doc.speed;
          prev.timestamp = doc.timestamp;
       }
     }\"\"\"

val groupedSpeed = collection.group(key, cond, initial, reduce)

for (dbObject: DBObject <- groupedSpeed) {
  println(dbObject.toString)
奇怪的是,在集合groupedSpeed中,该字段 速度不再是一个整数:
{ \"vehicleId\" : \"2\" , \"timestamp\" : { \"$date\" : \"2011-05-25T10:40:49Z\"} , \"speed\" : 2.0}
{ \"vehicleId\" : \"1\" , \"timestamp\" : { \"$date\" : \"2011-05-25T10:40:49Z\"} , \"speed\" : 1.0}
我错过了什么?我正在使用casbah 2.1.2。 干杯,   基督教 [更新]在javascript和bson中看起来很正常,请参见此处:casbah邮件列表     
已邀请:
Javascript将所有数值表示为双精度。 您可能需要扩展应用程序逻辑,以便每当插入新文档时,在单独的集合中还可以更新该车辆的最大速度,因此您不必进行组查询。     

要回复问题请先登录注册