2017-03-28 14 views
1

以下のように、 'STIME' と 'ETIME' のタイプは、ミリ秒で '日' です:mongoliteを使用してミリ秒単位で日付データをクエリする方法はありますか?

{ 
"_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

。また、http://stackoverflow.com/questions/5963269/how-to-make-a-great-r-reproducible-example – dash2

+0

も参照してください。sceenshotsは、mongoとRの照会されたデータの結果であり、構造化されたデータであり、テキストに変換されます。 –

+0

いずれのスクリーンショットでも約30秒でデータを入力できます。あなたの疑問を他者のために役立つリソースにしてください:それがSOの仕組みです。 – dash2

答えて

1

IはMongoの集計方法によって解決策を見つけた:私は2つの新しい変数「stime_milliseconds」と「etime_millisecondsとして「STIME」と「ETIME」のミリ秒のデータを抽出し、上記のコードで

journey <- mongo.data$aggregate(pipeline = '[{\"$match\":{\"_id\":{\"$oid\":\"58d843dd4da8fc62c8c6a0bd\"}}}, {\"$project\":{\"_id\":1, \"stime\":1, \"stime_milliseconds\":{\"$millisecond\":\"$stime\"}, \"etime\":1, \"etime_milliseconds\":{\"$millisecond\":\"$etime\"}}}]') 

'mongoで' millisecond 'メソッドを使用しています。次に、Rを介してmongoからデータを抽出します。これは次のようになります。

> journey 
         _id  stime  etime stime_milliseconds etime_milliseconds 
1 58d843dd4da8fc62c8c6a0bd 1490566894 1490568137    923    341 

最後の2つの数値はミリ秒のデータです。

これはあなたの代わりにテキストを使用できるかどうかのスクリーンショットを避けてください、そして[MCVE]を提供してください、私のソリューションであり、かつ

は私の下手な英語〜を(許し、より良い答えを歓迎)〜

関連する問題