2016-06-13 8 views
1

우리가 개발중인 모바일 앱 중 하나에 MongoDb을 사용하고 있습니다. 그것은 동기화 연락처의 기능이 있습니다.Mongodb 친구 관계 저장

저는 mongodb에 관계 (친구 관계 및 RDBMS 종류의 관계가 아님)를 저장하는 이상적인 방법을 알고 싶었습니다. 나는 같은 아키텍처를 알고 싶다.

나는 다음과 같은 사용자 수집 구조의 생각 : 위의 수집에서

{ 
    _id: ObjectID(abc), 
    name: "abc", 
    contacts: ["def", "ghi"] 
} 

나는 사용자 abc의 친구의 객체 식별자로 "def""ghi"을 고려하고있다. 이것은 올바른 방법인가요? 아니면 누군가가 저에게 그들이 구현했을지도 모르는 더 옳고 올바른 방법을 제안 할 수 있습니까?

내가 걱정하는 점은 장래에 특정 사용자의 데이터를 검색 할 때 성능이 떨어지지 않아야한다는 것입니다.

고려 사항 친구들이 수행 한 활동 컬렉션에서 모든 활동을 가져오고 싶다면.

답변

2

난 당신이 한 GET 쿼리 후 가진 이름 (또는 관련 중요한 다른이 필요합니다 당신이

{ 
    _id: ObjectID(abc), 
    name: "abc", 
    contacts: [{id:"def" name:"John"}, {id:"ghi", name:"Sari"} ] 
} 

기본 목록을 표시하려면 NoSQL이 구조의 장점을 사용하여 친구에 대한 좀 더 많은 정보를 제공/저장 수 있다고 생각 세부 정보) - 활동을 확인하십시오.

이 구조체의 추가 오버 헤드는 사용자가 이름을 업데이트 할 때마다 이름 (및 기타 세부 정보)을 업데이트해야 할 필요가 있습니다. 그러나 이것은 해머가 아니며 자주 이름을 변경합니까?

+0

당신의 대답은 나에게 좋을 것 같습니다. 그러나 사용자 (친구)의 활동이 많다는 것을 고려하면 친구들의 활동을 가져와야합니다. 그렇다면 다음 단계를 따라야 함을 의미합니까? 1) 내 사용자 개체에서 모든 연락처 배열 가져 오기 2) createdBy가 첫 번째 단계의 개체 ID 배열에있는 활동을 찾으십시오. –

+0

활동에 대해 별도의 컬렉션을이 것으로 간주합니다. 여러 사용자/친구 연결에 의해 교차 사용됩니다. – profesor79