1
몽고 데이터베이스에 두 개의 콜렉션이 있다고 가정하십시오 : A
& B
. 각 A
문서는 B
에 대한 참조를 가질 수 있지만 B
문서는 A
에 대한 참조를 다시 갖지 않습니다.Mongo : 다른 콜렉션에서 참조되지 않은 문서를 가져 오는 중
어떻게 효율적으로 B
것을이 A
에서 문서에 의해를 참조되지 않는 모든 문서를 찾을 수 있습니까?
B
에있는 모든 문서를 검색하고 수동으로 A
문서와 비교하는 것보다 효과적인 방법이 있습니까? 맵 축소로이 작업을 수행 할 수 있습니까?
쿼리를 지원하기 위해 B
에서 A
에 대한 참조를 추가해야합니까? Mongo는 트랜잭션을 지원하지 않으므로 실패 할 경우 일관성없는 상태가 될 수있는 가능성을 피하기 위해 모든 양방향 참조를 피했습니다.
또한 이러한 결과가 솔루션에 영향을 미치는 경우 효과적으로 페이지를 넘길 수 있어야합니다. 의사 코드에서
감사합니다, 조니. 좀 더 효율적인 방법이 있기를 바랬지 만, 나는'B'에서'A'로 되돌아 가야한다고 생각하기 시작했습니다. 쿼리는 간단하지만 데이터베이스를 업데이트하는 동안 오류가 발생하여 데이터베이스의 불일치를 해결할 수있는 논리를 추가해야합니다. – HolySamosa
나는 가능하다면 역 참조를 피할 것입니다. 불일치에 대한 기회가 너무 많습니다. 'A' 컬렉션의 'b_id' 속성에 인덱스를 추가하면 성능은 괜찮습니다. 분명히 상황의 특성에 달려 있습니다. – JohnnyHK
경고 - 이것은 확장되지 않습니다. 'distinct'연산은 최대 데이터 크기가 16MB로 제한됩니다. –