2010-08-24 2 views
2

지난 주 몽고이드를 사용하기 시작했습니다. 내 접근 방식이 맞는지 확실하지 않은이 협회 문제에 뛰어 들고 있습니다. 이메일 Mongoid :: 문서 필드를 포함 끝 클래스 프로젝트 : 이름 그래서 내가mongoid 프로젝트에 대한 방법 <=has_many=> 사용자

내가 사용자 모델과 프로젝트 모델 클래스 사용자 이 어떤 의견을 물어 보곤 Mongoid :: 문서 필드를 포함 생각 end

실제로 사용자 모델은 Devise, 인증 보석에 의해 만들어 지므로 프로젝트에 포함시킬 수 없습니다.

그래서 사용자가 많은 프로젝트를 가질 수 있고 프로젝트에 많은 사용자가있을 수있는 오래된 여러 다회가 필요하다면. 어떻게해야합니까? 이 Mongoid :: 문서 필드를 포함 클래스 사용자 : 이메일 references_many :

내 방법이 있습니다 프로젝트 referenced_in : 프로젝트 : inverse_of => : 사용자 Mongoid :: 문서 필드를 포함 끝 클래스 프로젝트 : 이름 references_many : 사용자 referenced_in : 사용자 : inverse_of => : 프로젝트 끝

이 같은 많은 t을 할 MongoDB의 아키텍처에 대한 올바른 방법인가 O-many 협회?

는 거의 관계형 데이터의 본질이기 때문에 그것, 다 대다에 올 때

답변

1

문서 데이터베이스가 실제로 매우 끔찍 감사드립니다. mongo는 데이터가 관계형이 아닌 계층 형일 때 빛난다.

나는 사용자에게 더 많은 이메일이있을 것이라고 가정하고 별도의 컬렉션에 사용자를 저장하고 사용자 ID 배열을 프로젝트 문서에 저장합니다. 전자 메일 일 뿐이라면 프로젝트 문서 안에 저장하고 더 비싸다는 사실을 받아들이면 사용자가 전자 메일을 변경해야합니다.

+1

안녕하세요 Matt, 입력 해 주셔서 감사합니다. 그것은 1) 나는 아직 많은 좋은 방법이 없다고 의심 할 가치가 없다는 것을 확신합니다. --- 저는 방금 Kyle Banker가 52 슬라이드에서 http://www.slideshare.net/kbanker/mongodb-the-way-and-its-power에 의해 슬라이드를 파 냈습니다. 그는 m을하는 방법을 데모합니다. Product.find category_id = 123. 제품의 모든 카테고리를 찾으려면 카테고리에서 모든 제품을 찾으려면 카테고리 objectIds를 product.in 의사 언어로 저장하여 -2m 제품 카테고리 조합을 작성해야합니다. category class : Category.find (id in product.category.ids. –

+1

@Nik : 솔직히 말해서, 지금은 한 달 반 정도 밖에 지나지 않았고, 그렇게 길지 않았기 때문에 대답이 너무 빨랐습니다. 전에 나는 같은 정보를 찾고 있었다 ;-) 나는 이것을 많이 보면서 http://vimeo.com/9864311을 보길 권할 것이다. –

+0

링크 및 귀하의 경험에 감사드립니다. - 적어도 나는이 일에 혼자가 아니라고 말하면서 기분이 나아지게 만듭니다. –

5

몽고 이드 문서는 http://mongoid.org/en/mongoid/docs/relations.html#has_and_belongs_to_many에서이를 수행하는 방법을 설명합니다. 아래쪽으로 스크롤하여 관계 연결. 표시된 코드 예제에는 Person 및 Preference 모델간에 다 대다 관계가 있습니다.

+0

링크는 http://mongoid.org/en/mongoid/docs/relations에 있습니다.html – tmaximini

+0

고마워, 프랭크. 내 대답을 업데이트했습니다. – nickh

관련 문제