2013-03-06 5 views
0

MongoDB 문서 디자인에 대해 머리를 쓰고 뭔가를하는 방법을 알아 내려고 또는 잘못된 트리를 짖고있는 경우.값의 고유 한 목록을 얻는 방법과 그 고유 한 값을 가진 모든 문서를 얻는 방법은 무엇입니까?

미니 CMS를 만들고 있습니다. 사이트에는 범주별로 그룹화 된 문서 또는 URL이 포함됩니다. 즉, 다른 사이트의 항목에 대한 링크 목록이있는 '상점'이라는 그룹이 있으며 '예술'이라는 카테고리가 있습니다. 카테고리에는 미술 작품 목록이 있습니다 각각에는 슬라이드 쇼의 제목, 요약 및 이미지가 있습니다. 나는 웹 페이지이 구조 ISN을 짓고 있어요 때 .... 여기

[{category: 'Products', 
    title: 'Thong', 
    href: 'http://www.thongs.com' 
},{ 
    category: 'Products', 
    title: 'Incredible Sulk', 
    href:'http://www.sulk.com' 
},{ 
    category: 'Art', 
    title: 'Cool art', 
    summary: 'This is a summary to display', 
    images: [...] 
}] 

그러나, 그리고 질문입니다 :

그래서이 작업을 수행하는 한 가지 가능한 방법은 같을 것입니다 컬렉션을 가지고하는 것입니다 나에게 많은 도움이되지 않아. 홈페이지에는 카테고리별로 그룹화 된 'things'목록이 포함되어 있습니다. 목록 ... 메뉴 ... 그런 것들. 쉽게 좀 더처럼 보이는 뭔가를해야한다고 할 수있을하려면

[ 
{'Products':[ 
     {title:'thong', href:'http://www.thongs.com'}, 
     {title:'Incredible Sulk'} 
    ] 
}, 
{'Art':[ 
     {title:'Cool art',summary:'This is a summary to display',images:[...]} 
    ] 
} 
] 

그래서 질문은 어떻게 든 MondoDB에서이 변환을 할 수있다? 그때 내 응용 프로그램 서버 계층에서이 작업을 수행하는 것이 좋지 않은 경우 (고유 범주의 그룹화 된 목록을 얻은 다음 해당 범주의 문서에 대한 Mongo를 쿼리하여 반복합니다)? 내가 응용 프로그램 서버 레이어를 추측하고있어, 모든 mongodb가 운이 좋으면 메모리에 모두 가지고 있기 때문에 나쁘다. 이들 중 어느 것도 좋지 않다면 나는 그것을 모두 잘못하고 있으며 실제로 이런 구조를 처음에 저장해야합니까?

사용자가 즉시 범주를 작성하고 많은 문서를 추가하기 시작하면 각 범주에 대해 얼마나 많은 문서를 가져올 지 제한해야하거나 필드를 반환하므로 mongodb를 쿼리 할 때 느리고 낭비되는 비교적 큰 데이터 청크가 반환되지 않고 대신 원하는 페이지를 생성해야하는 최소값이 반환됩니다.

답변

0

내가 원하는 구조를 거의 제공하는 그룹 쿼리를 찾았으나 템플릿에 사용할 수있을만큼 충분했습니다.

db.things.group({ 
    key:{category:true}, 
    initial:{articles:[]}, 
    reduce: function(doc, aggregator) { 
     aggregator.articles.push(doc); 
    } 
}) 
관련 문제