2014-02-19 4 views
0

플레이어가 다른 플레이어를 죽일 때마다 추적하는 간단한 애플리케이션을 만듭니다. 즉, 플레이어를 죽이면 살해 된 플레이어는 자신이 죽인 모든 플레이어가 포함 된 userarray에 추가되며 나중에 통계 등을 위해 사용할 수 있습니다. 사용자 이름을 문자열 값으로 저장하는 문제는 배열은 더 많은 공간이 필요하고 다른 데이터를 가져 오는 데 오래 걸릴 것입니다.MongoDB에서 ObjectId Array의 값을 가져옵니다.

내가 겪고있는 문제는 플레이어의 살인을 저장하는 방법을 잘 모르겠다는 것입니다. userarray 키를 잡고 각각 username을 가져와 표시 할 수 있어야합니다.

배열의 모든 단일 사용자를 가져와야하므로 지연이 발생합니까? 쿼리에 의해 이미 파싱 된 모든 값을 가진 userarray을 얻을 수있는 방법이 있습니까?

사용자 컬렉션 구조 (함께 ip, date 등); 제 컬렉션

enter image description here

구조;

enter image description here

그리고

enter image description here

는이 같은 데이터와 끝까지 노력하고 있어요;

enter image description here

+0

그럼 데이터가 없어졌습니다. 질문은 완전하지 않다 !!! –

답변

1

아마 제공하는 스크린 샷보다는 좀 더 설명과 함께 할 수 있었던이 동안, 당신은 우리가 대답 해결할 수 MongoDB의에서 스키마 설계의 핵심 개념과 사투를 벌인 것으로 보인다.

여러분은 userarray 필드에 ObjectId 참조 목록이 포함 된 문서가 있음을 지적했습니다. 아마도 이들은 컬렉션의 다른 곳에 있거나 자신의 다른 컬렉션에있는 문서를 참조 할 것입니다.

큰 문제는 "MongoDB는 조인을하지 않습니다."라는 것입니다. 그리고 참조 된 문서에서 "속성"을 얻으 려하므로 그럴 수 없습니다. 확실히 쉬운 방법이 아닙니다.

그래서 당신은 아마 원하는 당신이 참조 할 모든 데이터가 실제로 당신이 검색하는 부모 문서에 을 포함 embedded documents이다. 그러나 다시 귀하의 사용 요구에 따라 당신은 다른 것을 원할 수 있습니다. 이를 위해 MongoDB 문서에서 Data Modelling 섹션을 읽는 것이 좋습니다. 여기에서는 다양한 접근 방식에 대해 설명하고 이해를 돕습니다.

참조를 읽는 것이 실제로 원하는 것을 생각한 후에는 go to google에게 알려줌으로써 언어에 대한 라이브러리를 검색하여 도움을 얻을 수 있습니다.

아무튼, 일반적인 토론은 너무 광범위합니다. 독서를하고, 일을하고, 특정 문제에 대해 질문하십시오.