2010-06-22 8 views
1

저는 현재 제품을 저장하고 쿼리하기 위해 activerecord를 사용하는 레일 앱이 있습니다.mongodb 및 mongomapper

각 제품에는 카테고리와 하위 카테고리가 있으며 각 하위 카테고리는 애플리케이션 내에서 만들 수있는 여러 필드로 정의됩니다. 사용자가 특정 제품을 입력하려고 할 때, 관련 양식 필드로 압도됩니다.

이것은 매우 복잡해졌으며 mongodb 및 mongomapper에 대한 의견을 듣고부터 생각했거나 mongomapper를 처음 사용하면서 만들었 으면 좋겠다.

문제는 내가 mongodb 에서이 응용 프로그램을 모델링하는 가장 좋은 방법을 알고 싶습니다 ???

나는 일반 필드와 procuct 모델을 가지고 생각하고 있었는데 다음에 다른 분야와 제품 모델에서 상속 카테고리 모델을 가지고.

을합니까이 소리가 맞습니까?

문제는 사용자가 응용 프로그램 내에서 범주 및 필드를 만들 수있게하려는 것입니다. 예를 들어 사용자가 속도와 문 개수 등의 필드가있는 자동차 카테고리를 생성 할 때 어떻게해야합니까? 그렇다면 향후 자동차 입력을 위해이 필드를 사용하여 양식을 만들 수 있어야합니다.

누구든지 나를 도와 줄 수있는 아이디어, 포인터 또는 예제가 있으면 좋을 것입니다. 많이 미리 릭

+0

내가 댓글 수 루비 그러나 나는 C# 드라이버와 Windows에서 mongodb를 사용하기 시작했다는 것을 말하고 싶습니다. 그리고 스키마가 데이터에 의해 추론되기 때문에 나는 documement 지향 데이터베이스를 좋아합니다. 특히 st를 정의하지 않아도됩니다. 의사 관계 (즉, SQL) 둘 다 있지만 그들의 장소가 있습니다. mongo에 대한 JavaScript 객체 인터페이스는 느슨한 유형의 유연성을위한 실질적인 보너스입니다. –

답변

1

확인에

덕분에, 나는 루비/Mongomapper 전문가가 아니다, 그래서 나는이 "모델"로 매핑 할 수 없습니다. 그러나 Mongo의 관점에서 보면 이것을 보면 Mongo에서 데이터를 보길 원할 것입니다.

컬렉션 :카테고리

{"_id" : "car"} 
{"_id" : "vintage_car", "parent" : "car", "fields" : ["year" : "integer", "original_parts" : "boolean", "upgrades" : "text"] } 

컬렉션 : 제품

{"_id" : "1234", "name" : "Model-T", "category" : "car", "sub-category" : "vintage_car", "values" : ["year" : 1942, "original_parts" : false, "upgrades : "XM Radio"] } 

그래서 당신이 여기있는 것은 아주 간단합니다. 모든 카테고리와 하위 카테고리가 포함 된 컬렉션이 하나 있습니다. 객체가 "하위 카테고리"인 경우 "상위"필드가 설정됩니다. "상위"필드가 없으면 해당 개체는 "범주"입니다.

각 하위 카테고리에는 "fields"요소가 있습니다. "필드"는 실제로 쌍의 배열입니다. 이렇게하면 쉽게 렌더링 할 수 있습니다. 누군가 빈티지 자동차에 들어가면 "빈티지 카"카테고리를 찾은 다음 "입력란"을 반복하여 적절한 입력 상자를 렌더링합니다. "정수"와 "부울"과 같은 단순한 것들을 사용했지만, 여기에 원하는 것을 넣을 수 있습니다 ("날짜 표시기", "체크 상자", ...) 그것은 모두 당신에게 달린 것입니다.

이제 제품 자체는 범주 및 하위 범주에 대한 참조를 저장합니다. 또한 입력 한 모든 필드의 값을 저장합니다.

그래서 제품에는 필요한 모든 데이터가있어 각 제품을 매우 쉽게 렌더링해야합니다. 제품과 해당 하위 카테고리를로드하면 동적으로 페이지를 렌더링하는 데 필요한 모든 정보가 제공됩니다.

편집 주석에 응답에서

카테고리에서 "필드는"측정 단위로 구축 할 수 있습니다

..."fields" : [{"length","meters","float"},{"weight","kg","float"},...]

+0

도움을 주신 게이츠 부사장에게 감사드립니다. 각 필드의 단위를 저장해야합니다. 즉, 자동차 길이는 mm이고, 자동차 중량은 kg이고, 회전 속도 = rpm입니다. 솔루션에이 문제를 어떻게 적용 할 수 있습니까? 고마워 릭 –

+0

"카테고리"컬렉션을 수정하십시오. 필자는 "필드"를 "쌍"(키 - 값)의 배열로 만들었습니다. 그러나 객체의 배열로 만들 수 있습니다. 나는 이것에 대한 답변을 하단에 업데이트했다. –