2017-10-23 6 views
0

私はドキュメントの各行に日付フィールド(ISOフォーマットの日付)があるmongodbデータベースを持っています。isodateフィールドの分にアクセスする方法mongodb

日付フィールドで時間と分にアクセスしようとしていますが、1時間ごとに行数を表示します(1分あたり複数行になる可能性があります)。最初の列は時間

11:20 5 
11:41 1 
13:20 8 
15:30 11 

(時間:分)を、第2列その時に対応する行の数出力は次のようなものであろう。

これは私がMongoDBの中で実行していますコマンドです:

db.user.aggregate([{$group: {_id: {hora: {$hour: '$created_at'}, minuto: {$minute: '$created_at'}}, total: {$sum: 1}}}]) 

はどこ「ホラは」時間と「minuto」分を示すフィールドを示すフィールドです。

これは私が得るメッセージです:これはisodateフォーマットがどのように見えるかです

enter image description here

enter image description here

答えて

1

あなたはISODateとして日付を保存するのではなく、としてされていないように見えますISODate形式の文字列。

あなたがfindクエリを実行すると、それは
"created_at" : ISODate("2016-11-01T11:46:03.000Z")

とないを示すべきである:あなたが書いた

"created_at" : "2016-11-01T11:46:03.000Z"

コードが正しいです。

文字列をISODateに変換する必要があります。

あなたのmongoshellでこのクエリを発射することができます

db.user.find().forEach(function(doc){ 
    doc.created_at = new Date(created_at) 
    db.user.save(doc); 
}) 
関連する問題