1
나는 다음과 같은 형식MongoDB를 집계 PHP, 시간에 의해 그룹
{
"_id" : ObjectId("12e123123123123123"),
"client_id" : "12345667889",
"resource" : "test/test",
"version" : "v2",
"ts" : new Date("Wed, 02 Jan 2013 15:34:58 GMT +08:00")
}
ts
MongoDate() 필드는 문서를 가지고있다.
내가 표/그래프
이 내 현재 시도
$usage = $this->db->Usage->aggregate(array(array(
'$project' => array(
'hour' => array(
'years' => array('$year' => '$ts'),
'months' => array('$month' => '$ts'),
'days' => array('$dayOfMonth' => '$ts'),
'hours' => array('$hour' => '$ts'),
)
),
'$group' => array(
'_id' => array(
'client_id' => '$client_id',
'hour' => '$hour',
),
'number' => array('$sum' => 1),
)
)));
불행히도 내 대답 나는이에 표시 할 CLIENT_ID 및 시간에 의해 그룹에 PHP에서 MongoDB를 집계 함수를 사용하고 사용량을 계산하려고 다시 얻는 것은 client_id만으로 그룹화하는 것입니다.
[result] => Array
(
[0] => Array
(
[_id] => Array
(
[client_id] => adacf8deba7066e4
)
[number] => 12
)
)
올바른 방향으로 나를 가리킬 수 있거나 시간 단위로 분류 할 수있는 사람이 있습니까?
--Fixed-- PHP는 각 파이프 라인을 별도의 배열에 넣고 모든 것을 배열에 넣어야합니다. 그것은 당신이보고있는 결과를 만들 수 없습니다해야하지만, 그것은 $group
운영자에게 사용할 수 있도록 당신이 당신의 $project
운영자에 client_id
을 포함해야합니까 JohnnyHK
$usage = $this->db->Usage->aggregate(array(array(
'$project' => array(
'client_id' => 1,
'hour' => array(
'years' => array('$year' => '$ts'),
'months' => array('$month' => '$ts'),
'days' => array('$dayOfMonth' => '$ts'),
'hours' => array('$hour' => '$ts'),
)
)),array(
'$group' => array(
'_id' => array(
'client_id' => '$client_id',
'hour' => '$hour',
),
'number' => array('$sum' => 1),
)
)));
나도 같은 반응을 얻고 난 그 변경 한 후
쉘 해당
일했다. 나는 쉘에서 같은 것을 시도해 보았고 동일한 잘못된 결과를 얻고있다. 그래서 내 콜렉션이 설치되어 있거나 몽고 쓰 자체와 관련이 있다고 생각하게 만든다. 2.2.2 버전을 실행 중입니다. – Balthasar이상한. MongoDB v2.2.2에서 이것을 테스트하기 위해 사용하고있는 쉘 셸을 추가했습니다. – JohnnyHK
굉장히 고쳤습니다. 그것은 PHP가 변수를 통과하는 데 필요한 방법이었습니다. 프로젝트에서 client_id를 추가해야했습니다. 나는 해결책으로 내 질문을 업데이트 할 것이다. – Balthasar