[MONGODB] 시간에 의해 MongoDB의 그룹
MONGODB시간에 의해 MongoDB의 그룹
내가 DB를 몽고하는 트윗을 저장합니다 :
twit.stream('statuses/filter', {'track': ['animal']}, function(stream) {
stream.on('data', function(data) {
console.log(util.inspect(data));
data.created_at = new Date(data.created_at);
collectionAnimal.insert(data, function(err, docs) {});
});
});
괜찮아.
MongoDB의의 트윗 시간 형식으로되어 있습니다 : 2014년 4월 25일 그리니치 표준시 11시 45분 14초 (열 created_at) 지금은 시간 그룹 열 created_at이 필요합니다. 나는 결과를 가지고 싶다 :
시간 | 시간에 트윗을 계산
1 | 28
2 | 26
3 | 32
4 | 42
5 | 36
...
내 시도가 실패한 :
$keys = array('created_at' => true);
$initial = array('count' => 0);
$reduce = "function(doc, prev) { prev.count += 1 }";
$tweetsGroup = $this->collectionAnimal->group( $keys, $initial, $reduce );
그러나 시간에 의해 그룹 내 수 없습니다.
그것을 어떻게?
해결법
-
==============================
1.당신이 그룹은 몽고 콘솔에 직접 통합 프레임 워크를 사용하는 방법 나는 당신을 말할 수
당신이 그룹은 몽고 콘솔에 직접 통합 프레임 워크를 사용하는 방법 나는 당신을 말할 수
db.tweets.aggregate( { "$project": { "y":{"$year":"$created_at"}, "m":{"$month":"$created_at"}, "d":{"$dayOfMonth":"$created_at"}, "h":{"$hour":"$created_at"}, "tweet":1 } }, { "$group":{ "_id": { "year":"$y","month":"$m","day":"$d","hour":"$h"}, "total":{ "$sum": "$tweet"} } })
http://docs.mongodb.org/manual/reference/operator/aggregation-date/ : 추가 옵션을 보려면 여기 볼 수
당신은 또한 당신이 사용하고있는 중 프로그래밍 언어에서 통합 프레임 워크를 사용하는 적절한 방법을 찾아야합니다.
-
==============================
2.그룹화 _id를 정의 할 때 연산자 함수는 단지 $ 조별 리그에 직접 적용 할 수있는 날짜로 여기에 $ 프로젝트 단계를 사용할 필요가 없어야합니다. 이 결과를 얻기 위해 전체 컬렉션을 처리 할 필요가 저장합니다 :
그룹화 _id를 정의 할 때 연산자 함수는 단지 $ 조별 리그에 직접 적용 할 수있는 날짜로 여기에 $ 프로젝트 단계를 사용할 필요가 없어야합니다. 이 결과를 얻기 위해 전체 컬렉션을 처리 할 필요가 저장합니다 :
0의 결과로 문제가되는 존재하지 않는 필드를 정의했다 : 또한 당신은 그래서 단순히 {1 "$ 합계를"} 계산된다.
$this->collection->aggregate(array( array( '$group' => array( "_id" => array( "y" => array( '$year' => '$created_at' ), "m" => array( '$month' => '$created_at' ), "d" => array( '$dayOfMonth' => '$created_at' ), "h" => array( '$hour' => '$created_at' ), ), "total" => array( '$sum' => 1 ), ), ) ));
어떤 경우, 날짜를 필터링하기 위해 파이프 라인의 시작에 $ 일치하는 단계를 추가합니다. 어느 날 출력 허용의 경우, 당신은 단지 그룹화에 $ 시간을 정의 할 필요가 당신은 빠른 수단 작업 집합 크기를 줄일 수 있습니다. 그리고 아마 당신은 어쨌든 수행 할 작업.
from https://stackoverflow.com/questions/23293082/mongodb-group-by-hour by cc-by-sa and MIT license
'MONGODB' 카테고리의 다른 글
[MONGODB] 나는 MongoDB를 사용하여 이미지를 저장하기 위해 어떤 데이터 유형을 사용해야합니까? (0) | 2019.12.20 |
---|---|
[MONGODB] MongoDB를 집계 쿼리는 $ 합계를 사용하여 적절한 금액을 반환하지 않습니다 (0) | 2019.12.20 |
[MONGODB] MongoDB의 로컬 시간대에서 집계 (0) | 2019.12.19 |
[MONGODB] MongoDB를 일치 $ 유형의 배열? (0) | 2019.12.19 |
[MONGODB] 어떻게 원자 조작으로 하나 개의 문서에 부울 필드를 전환하려면? (0) | 2019.12.19 |