如下所示,'stime'和'etime'的类型是'Date',以毫秒为单位:
{
"_id" : ObjectId("58d843dd4da8fc62c8c6a0bd"),
"stime" : ISODate("2017-03-26T22:21:34.923Z"),
"etime" : ISODate("2017-03-26T22:42:17.341Z"),
}
我查询了这样的数据:
data.names<-c("stime","etime")
mongo.data <- mongo(collection = "data_1",db = "data_test",
url = "mongodb://10.23.102.122:32800")
journey <- mongo.data$find(query = '{\"_id\" : {\"$oid\":\"58d843dd4da8fc62c8c6a0bd\"}}',
fields = paste('{\"_id\":true, ',
paste('\"',data.names,'\":true', collapse = ', ', sep=''),
'}', sep = ''))
但查询的数据是没有毫秒数据的UTC时间戳:
> journey
_id stime etime
1 58d843dd4da8fc62c8c6a0bd 1490566894 1490568137
> format(as.POSIXct(unlist(journey[1,-1]), origin = "1970-01-01 00:00:00"), format="%Y-%m-%d %H-%M-%OS3")
stime etime
"2017-03-27 06-21-34.000" "2017-03-27 06-42-17.000"
那么,我如何用毫秒数据查询数据呢?
答案 0 :(得分:1)
我通过mongo聚合方法找到了解决方案:
journey <- mongo.data$aggregate(pipeline = '[{\"$match\":{\"_id\":{\"$oid\":\"58d843dd4da8fc62c8c6a0bd\"}}}, {\"$project\":{\"_id\":1, \"stime\":1, \"stime_milliseconds\":{\"$millisecond\":\"$stime\"}, \"etime\":1, \"etime_milliseconds\":{\"$millisecond\":\"$etime\"}}}]')
在上面的代码中,我提取了&#39; stime&#39;的毫秒数据。并且&#39; etime&#39;作为两个新变量&#39; stime_milliseconds&#39;和&#39; etime_milliseconds&#39;使用“毫秒”&#39; mongo中的方法。然后通过R从mongo中提取数据,如下所示:
> journey
_id stime etime stime_milliseconds etime_milliseconds
1 58d843dd4da8fc62c8c6a0bd 1490566894 1490568137 923 341
最后两个数字代表毫秒数据。
这是我的解决方案,欢迎更好的回答
原谅我可怜的英语〜()〜