블로그 게시물을 설명하는 횟수와 함께 연/월 조합 목록을 가져 오려고합니다. 아이디어는 그들이과 같이 표시 될 것입니다 :이 얻을 관리해야 Ruby 드라이버를 사용하는 MongoDB 그룹
2010
- 1월 (1 개 포스트)
- 2009년 12월 (2 게시물)
- ... MongoDB의 JS 쉘을 사용하여 작업하고 유용한 형식으로 결과를 반환합니다 :
db.posts.group({ keyf: function(x){ return { month: x.datetime.getMonth(), year:x.datetime.getFullYear() }; }, reduce: function(x,y){ y.count++ }, initial:{count:0} })
결과 :
을[ { "month" : 0, "year" : 2010, "count" : 3 }, { "month" : 0, "year" : 1970, "count" : 1 } ]
이것은 정확히 내가 한 것입니다. 그러나이를 루비 드라이버에 적합한 코드로 변환하려고 시도 할 수는 없습니다. (나는 따라서
Post.collection
을 MongoMapper을 사용하고) 나는 문서를 살펴 보았다 나의 이해에서, 다음과 같은 결과를 얻을해야합니다@archive = Post.collection.group( "function(x) { return { month: x.datetime.getMonth(), year:x.datetime.getFullYear() }; }", nil, { :count => 0 }, 'function(x,y){y.count++}', true)
대신 유용한 데이터의 좋은 배열을 돌려주는, 내가 ' (! 소스 코드에 대한 이해) : m이 엉망이 점점
{ "function(x) { return { month: x.datetime.getMonth(), year:x.datetime.getFullYear() }; }" => nil, "count" => 4.0 }
그 중 하나가 완전히 자신의 문서를 무시하는 것 같다 또는 여기 기본적인 뭔가를 놓친 거지. 나는 머리카락을 거의 꺼내고있다.
버전을 확인했으며 0.18과 0.18.2를 설치했습니다. 나는 이전 버전을 삭제하고 MongoMapper (내가 0.18에 의존했던 버전)를 업데이트했다. 문제는 여전히 지속됩니다. 나는 또한 당신이 한 것처럼 드라이버를 사용하려고 시도했지만 제 경우에는 여전히 실패합니다. 내가 너보다 왜 다르게 행동할지 이해가 안돼? 편집 : 올바른 결과를 얻으므로 자체 스크립트에서이를 시도하십시오. 그것은 내 레일 애플 리케이션 내에서만 실패로 보인다. –
흠. Rails가이 작업에 어떤 영향을 미칠지 모릅니다. 가장 좋은 방법은 나와 MongoMapper 모두에게 실패한 테스트 케이스를 작성하는 것입니다. –
오, 나는 엄청난 기념비적 인 것이 었습니다. 0.18에서 0.18.2 사이의 버전 차이가 있음을 알 수 있습니다. 이전 보석을 제거하고 모든 것을 업데이트 한 후 dev 서버를 다시 시작하는 것을 잊었습니다. 되돌아 가서 github에서 0.18 소스를 보면, 0.18.2에서 keyf 코드에 대한 지원이 추가되고 수정되었다는 것을 알 수 있습니다. 나는 바보 같다고 생각한다. :) –