使用组聚合时,数据类型从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邮件列表
没有找到相关结果
已邀请:
1 个回复
硕歌沙