에 친구의 리더를 취득하는 방법이 내 친구 컬렉션MongoDB를
[
{
"_id": "59e4fbcac23f38cdfa6963a8",
"friend_id": "59e48f0af8c277d7a8886ed7",
"user_id": "59e1d36ad17ad5ad3d0453f7",
"__v": 0,
"created_at": "2017-10-16T18:34:50.875Z"
},
{
"_id": "59e5065f705a90cfa218c9e5",
"friend_id": "59e48f0af8c277d7a8886edd",
"user_id": "59e1d36ad17ad5ad3d0453f7",
"__v": 0,
"created_at": "2017-10-16T19:19:59.483Z"
}
]
이 내 점수 모음입니다 :
[
{
"_id": "59e48f0af8c277d7a8886ed8",
"score": 19,
"user_id": "59e48f0af8c277d7a8886ed7",
"created_at": "2017-10-13T09:02:10.010Z"
},
{
"_id": "59e48f0af8c277d7a8886ed9",
"score": 24,
"user_id": "59e48f0af8c277d7a8886ed7",
"created_at": "2017-10-11T00:56:10.010Z"
},
{
"_id": "59e48f0af8c277d7a8886eda",
"score": 52,
"user_id": "59e48f0af8c277d7a8886ed7",
"created_at": "2017-10-24T09:16:10.010Z"
},
]
이 내 사용자의 모음입니다.
[
{
"_id": "59e48f0af8c277d7a8886ed7",
"name": "testuser_0",
"thumbnail": "path_0"
},
{
"_id": "59e48f0af8c277d7a8886edd",
"name": "testuser_1",
"thumbnail": "path_1"
},
{
"_id": "59e48f0af8c277d7a8886ee3",
"name": "testuser_2",
"thumbnail": "path_2"
},
{
"_id": "59e48f0af8c277d7a8886ee9",
"name": "testuser_3",
"thumbnail": "path_3"
},
]
그리고 마지막으로 내가 이런 일에 (지난 24 시간 동안 말) 특정 기간 동안 최고 점수 순으로 정렬 친구들의 목록이 필요 ... 이것을 달성하는 가장 좋은 방법은 무엇
[
{
"friend_id": "59e48f0af8c277d7a8886ed7",
"friend_name":"test_user_2"
"thumbnail":"image_path",
"highscore":15
},
"friend_id": "59e48f0af8c277d7a8886edd",
"friend_name":"test_user_3"
"thumbnail":"image_path",
"highscore":10
}
]
? 나는 집계 파이프 라인을 시도했지만 3 개의 콜렉션을 가지고 작업하는 것과 혼란 스럽다.
컬렉션이 수행되는 방식은 SQL 테이블 디자인과 비슷합니다. 이유가 있니? 사용자는 동일한 문서에 모두 포함 된 친구 목록과 점수 목록을 가질 수 있습니다. 또한 MongoDB는 SQL과 같은 테이블을 조인하는 데 적합하지 않습니다. –
@ A.P. 점수 항목은 시간이 지남에 따라 계속 증가 할 것입니다. 사용자는 하루에 20-30 점의 점수를 기록합니다. 친구의 경우 임베디드 될 수 있지만 100-500 항목의 배열 크기가 너무 커서 성능에 영향을주지는 않습니까? –