programing

$lookup Aggregation 연산자와 함께 샤딩을 사용하는 MongoDB

batch 2023. 6. 25. 18:34
반응형

$lookup Aggregation 연산자와 함께 샤딩을 사용하는 MongoDB

$lookupMongoDB 3.2의 새로운 기능입니다.동일한 데이터베이스의 공유되지 않은 컬렉션에 대한 왼쪽 외부 조인을 수행하여 처리를 위해 "가입된" 컬렉션의 문서를 필터링합니다.

사용하기$lookup,그from컬렉션을 셰이딩할 수 없습니다.

반면에, 샤딩은 유용한 수평 스케일링 접근법입니다.

그것들을 함께 사용하는 가장 좋은 방법은 무엇입니까?

당신이 인용한 문서가 나타내듯이, 당신은 사용할 수 없습니다.$lookup단편적으로 모은 돈으로따라서 최상의 해결 방법은 별도의 쿼리에서 직접 조회를 수행하는 것입니다.

  1. 수행할 작업aggregate질의하다
  2. 를 사용하여 쿼리 결과의 "localField" 값을 배열로 가져옵니다.
  3. 수행find다음과 같은 쿼리를 사용하여 "from" 컬렉션에 대해 쿼리합니다.{foreignField: {$in: localFieldArray}}
  4. 원하는 형식으로 결과를 병합합니다.

하지 마세요.$lookup제한은 확장성을 위해 필요한 컬렉션을 샤딩하는 것을 방지합니다. 검색 기능을 직접 수행하기만 하면 됩니다.

MongoDb 문서에서 "$lookup 단계에서는 from 컬렉션을 샤드할 수 없습니다.그러나 aggregate() 메서드를 실행하는 컬렉션은 분할할 수 있습니다." https://docs.mongodb.com/manual/reference/operator/aggregation/lookup/

db.shardedCollection.aggregate([
   { $lookup: { from: "unshardedCollection", ... } }
])

함께 사용하는 것이 가장 좋습니다.

언급URL : https://stackoverflow.com/questions/34633111/mongodb-to-use-sharding-with-lookup-aggregation-operator

반응형