MongoDB를 사용하고 있는데 실수로 두 개의 콜렉션이 생겼습니다. 트윗 수집에서 고유 사용자 30 만 개 레코드두 개의 컬렉션을 동시에 쿼리하는 방법은 무엇입니까?
{
"_id" : ObjectId("515af34297c2f607b822a54b"),
"text" : "bla bla ",
"id" : NumberLong("314965680476803072"),
"user" :
{
"screen_name" : "TheFroooggie",
"time_zone" : "Amsterdam",
},
}
두 번째 컬렉션 (사용자)과는 다음과 같습니다
첫 번째 컬렉션 (샘플) 다음과 같은 구조 억 개 기록 (트윗)가 사용자 컬렉션에 _id가 트위터 컬렉션에서 user.screen_name는이
{ "_id" : "000000_n", "target" : 1, "value" : { "count" : 5 } }
은 타겟 상태 (스패머 여부) 최종적 value.count 사용자는 첫 번째로 등장 개수이다 컬렉션 (샘플) 컬렉션 (e .지. 캡처 된 트윗 수) 지금
나는 다음과 같은 쿼리를하고 싶습니다 :
나는 사용자가 목표 값이 (트윗) 샘플 모음에서 모든 문서를 반환하고 싶습니다= 1
을즉, 예를 들어 모든 스팸 발송자의 모든 트윗을 반환하고 싶습니다.
쿼리는 한 번에 하나의 컬렉션에서만 작동 할 수 있습니다. 조인이 없습니다. 조인이있는 것처럼 보일 수있는 프레임 워크가 있지만 실제로는 많은 쿼리가 작성됩니다. StackOverflow에는 많은 질문/답변이 있습니다. – WiredPrairie
귀하의 의견에 대해 WiredPrairie에게 감사드립니다. StackOverflow에서 몇 가지 솔루션 주소를 탐색했지만 많은 수의 레코드를 수용 할만큼 효율적이지 못하거나 필요하지도 않았습니다. '사용자'(두 번째 컬렉션)와 하위 문서로 된 자신의 트윗이 포함 된 세 번째 컬렉션이 실제로있는 것이 맞는지 궁금합니다. 그러나 합리적인 시간에이를 완료하려면 효율적인 구현이 필요하며이 비 관계형 세계의 초보자로서의 도움을 주시면 감사하겠습니다. – amaatouq
사용자 문서에 트윗을 포함시키지 않으려 고합니다. 여기에 두 개의 쿼리를 작성하면 어떤 문제가 발생합니까? 일들이 적절하게 색인되면 합리적으로 빠를 것입니다 (확실히 세 번째 모음을 유지하는 것보다 빠릅니다).하나의 쿼리에서이 작업을 수행하는 것이 중요한 경우 대상 필드를 트윗 콜렉션 사용자 하위 문서로 비정규 화 한 다음 누군가가 "재 분류"되었을 때이를 업데이트하는 배치 작업을 가질 수 있습니다. –