0

私はたくさんの文書を持っています:

{"timestamp" : 1304535236, "value" : 2}
{"timestamp" : 1304532236, "value" : 5}
{"timestamp" : 1304535647, "value" : 1}

timestampUNIX タイムスタンプです。value各日の合計数を合計したいと思います。注: タイムスタンプが同じ日であっても、時刻が異なるだけのドキュメントが多数存在する場合があります。

通常のmongoグループクエリを実行すると、タイムスタンプごとに合計されます。それらはすべて一意であるため、役に立ちません。

4

1 に答える 1

2

日ごとにグループ化できるように、timestamp値をオブジェクトに変換する必要があります。Date

レイチェルの答えを出発点として使用する(シェル内):

db.test.group({
  keyf: function(doc) {
    var date = new Date(doc.timestamp*1000);
    var dateKey = (date.getMonth()+1) + "/" + 
                  date.getDate() + "/" + 
                  date.getFullYear();
    return {day: dateKey};
  },
  initial: {value: 0},
  reduce: function(curr, result) { result.value += curr.value; }
});

戻り値:

[
  {
    "day": "5/4/2011",
    "value": 8
  }
]
于 2013-01-29T19:16:57.853 に答える