이 작업은 통합 프레임 워크의 고전 : 첫 번째 변종에 대한 http://docs.mongodb.org/manual/core/aggregation/ 당신은 다음과 같이 사용될 수 있습니다
test> db.video.aggregate([{$unwind:'$stats'}, {$group:{_id:{name:'$video_name', day:'$stats.day'}, views:{$sum:'$stats.views'}}}])
{
"result" : [
{
"_id" : {
"name" : "Blabla2",
"day" : 3
},
"views" : 344
},
{
"_id" : {
"name" : "Blabla2",
"day" : 1
},
"views" : 684
},
{
"_id" : {
"name" : "Blabla",
"day" : 2
},
"views" : 342
},
{
"_id" : {
"name" : "Blabla2",
"day" : 2
},
"views" : 342
},
{
"_id" : {
"name" : "Blabla",
"day" : 1
},
"views" : 342
}
],
"ok" : 1
을하지만, 영상의 당신의 횟수가 눈사태처럼 증가 될 경우 당신은 미래의 문제가 있었다 수 있습니다. help $ match 작업으로 특정 날짜의 통계를 정확하게 계산할 수 있지만 이는 일시적인 해결책입니다. 이 모델
{
video_name: "Blabla",
day: x,
views: 342}
}
, 당신이 만드는 실험 실용 도움이 문서와 통합 프레임 워크의 크기에 의존하지 않는 :
좋은 생각은 (만약 당신이 할 수있는) 더 간단 할 수있는 변경 데이터 모델입니다 전망 :;
)
db.video.aggregate([{$group:{_id:{name:'$video_name', day:'$day'}, views:{$sum:'$views'}}}])
당신은 간단하게 당신이 그룹 비디오 또는 비디오와 일의 이름으로, 당신은 당신이 원하는대로 어떤 통계를 계산 확보 할 수 있고, 하루 하루 간격 중 하나를 선택할 수 있습니다
사용자에게 필요한 것은 무엇이며 쿼리는 어떻게 구성됩니까? 하나의 문서/비디오에 통계를 넣으려면 16MB의 MongoDB 문서 한도에 도달해야합니다. – WiredPrairie