2013-09-08 3 views
0

초당 게시물 수를 찾아서 그래프로 입력하여 활동 동향을 표시하려면 데이터베이스를 쿼리하고 싶습니다. 나는 spring-data-mongo를 사용하지만, 지금은 첫 번째 단계는 mongo shell에서 java를 사용하는 방법을 염려하기 전에 이것을 수행하는 것이다. 아래 그림과 같이 MongoDB에서 ISODate 소수 부분없이 초 단위로 그룹화하는 방법

내가 그것에 통합 프레임 워크를 사용 : 결과는 고무적이지만입니다

db.post.group({ 
key:{dateCreated: 1}, 
cond: { dateCreated: 
     { 
      "$gt": new ISODate("2013-08-09T05:51:15Z"), 
      "$lt": new ISODate("2013-08-09T05:51:20Z") 
     } 
     }, 
reduce: function(cur, result){ 
    result.count += 1 
}, 
initial: {count:0} 
}) 

때문에 ISODate의 소수 부분의 것, 카운트가와 초 당 그룹처럼 잘못된 것 같습니다

[ 
{ 
    "dateCreated" : ISODate("2013-08-09T05:51:15Z"), 
    "count" : 5 
}, 
{ 
    "dateCreated" : ISODate("2013-08-09T05:51:16Z"), 
    "count" : 8 
}, 
{ 
    "dateCreated" : ISODate("2013-08-09T05:51:17Z"), 
    "count" : 3 
}, 
{ 
    "dateCreated" : ISODate("2013-08-09T05:51:18Z"), 
    "count" : 10 
}, 
{ 
    "dateCreated" : ISODate("2013-08-09T05:51:19Z"), 
    "count" : 2 
}, 
{ 
    "dateCreated" : ISODate("2013-08-09T05:51:20Z"), 
    "count" : 13 
} 

] 
각 계수 1.

[ 
{ 
    "dateCreated" : ISODate("2013-08-09T05:51:15.332Z"), 
    "count" : 1 
}, 
{ 
    "dateCreated" : ISODate("2013-08-09T05:51:15.378Z"), 
    "count" : 1 
}, 
{ 
    "dateCreated" : ISODate("2013-08-09T05:51:15.377Z"), 
    "count" : 1 
}, 
// many more here 
] 

을 진수하는 방법은 아래와 같은 결과에로만 초 부분을 고려하는 것이 있는가

감사합니다.

+1

왜 통합 프레임 워크를 사용하지? 정말 하나의 샤딩을 지원하고 올바른 방향을 가리키는 것에 대해 JS – Sammaye

+0

덕분입니다. –

답변

0

같은 상황에있는 사람들을 위해. 여기 내 쿼리를 수정하는 방법입니다. @Sammaye에 감사드립니다. http://docs.mongodb.org/manual/reference/aggregation/second/#exp._S_second :

db.post.aggregate(
{ 
    $match: { dateCreated: 
        { 
         "$gt": new ISODate("2013-08-09T05:51:15.000Z"), 
         "$lt": new ISODate("2013-08-09T05:51:20.000Z") 
        } 
      } 
}, 
{ 
    $group: { 
     _id: { 
      hour: {$hour: "$dateCreated"}, 
      minute: {$minute: "$dateCreated"}, 
      second: {$second: "$dateCreated"} 
     }, 
     cnt: {$sum : 1} 
     } 
} 
) 
    { 
"result" : [ 
    { 
     "_id" : { 
      "hour" : 5, 
      "minute" : 51, 
      "second" : 19 
     }, 
     "cnt" : 26 
    }, 
    { 
     "_id" : { 
      "hour" : 5, 
      "minute" : 51, 
      "second" : 18 
     }, 
     "cnt" : 29 
    }, 
    { 
     "_id" : { 
      "hour" : 5, 
      "minute" : 51, 
      "second" : 17 
     }, 
     "cnt" : 27 
    }, 
    { 
     "_id" : { 
      "hour" : 5, 
      "minute" : 51, 
      "second" : 16 
     }, 
     "cnt" : 25 
    }, 
    { 
     "_id" : { 
      "hour" : 5, 
      "minute" : 51, 
      "second" : 15 
     }, 
     "cnt" : 16 
    } 
], 
"ok" : 1 
    } 
관련 문제