web-dev-qa-db-ja.com

タイムスタンプをmongodbの日付に変換する方法は?

私はmongodbコレクションの集計に取り組んでいます。私のmongodbコレクションにはタイムスタンプにcreation_timeがあります。同じ日の結果を収集し、翌日の結果と集計するにはどうすればよいですか?5日間データを収集する必要があると仮定します。

{
    "_id" : "1522845653126"
},
{
    "_id" : "1522838153324"
},
{
    "_id" : "1513421466415"
},
{
    "_id" : "1515488183153"
},
{
    "_id" : "1521571234500"
}

特定の日に保存されるエントリの数は?そして、次のように、集計の現在の合計を返す結果をクエリしたいとします。

{
 time: "2013-10-10"
 count: 3,

},
{
 time: "2013-10-11"
 total: 7,

}

このようなもの。私はこのようなことをしようとしました

db.coll.aggregate([
   {
        $group:{
        _id:new Date($creation_time).toLocaleDateString(),
         $count:{$add:1}
            }
         time:new Date($creation_time).toLocaleDateString()
   }
 ])

それは動作しません。どこで間違っていますか?私はmongodbが初めてです。助けてくれてありがとう

5
user8934737

$toDate タイムスタンプをISO日付に変換する集約および $toLong 文字列のタイムスタンプをmongodb 3.6の整数値に変換する

db.collection.aggregate([
  { "$project": {
    "_id": {
      "$toDate": {
        "$toLong": "$_id"
      }
    }
  }},
  { "$group": {
    "_id": { "$dateToString": { "format": "%Y-%m-%d", "date": "$_id" } },
    "count": { "$sum": 1 }
  }}
])

試してみてください here

そして以前のバージョンでは

db.collection.aggregate([
  { "$project": {
    "date": { "$add": [ new Date(0), "$_id" ] }
  }}
])
5
Ashh