source

Mongodb : $in 연산자 대 단일 쿼리 로트

myloves 2023. 5. 28. 22:56

Mongodb : $in 연산자 대 단일 쿼리 로트

MongoDB가 초당 많은 요청을 처리할 수 있다는 것을 알고 있지만 _id가 주어진 컬렉션의 많은 문서를 쿼리해야 한다고 가정해 보겠습니다. _id 속성에서 원하는 모든 ID로 $in을 만드는 것과 FindOne 쿼리를 루프오버하는 것 중 더 나은 것은 무엇입니까?

저는 $in 쿼리를 사용하고 _ids 배열을 제공하는 것에 확실히 동의합니다.

예:

db.collection.find({
    "key": {
        "$in": [
            ObjectId("xxx"),
            ObjectId("yyy"),
            ObjectId("zzz")
        ]
    }
})

왜요?

  • 루프하는 경우, 커서를 생성하고 소모하는 각 쿼리에 대해 오버헤드를 발생시키는 일정한 양의 설정 및 해체가 있습니다.
  • 로컬 시스템에서 이 작업을 수행하지 않으면 모든 요청에 대해 tcp/ip 오버헤드도 생성됩니다.로컬에서 도메인 소켓을 사용할 수 있습니다.
  • 기본적으로 생성된 "_id"에 인덱스가 있으며 일괄 요청으로 반환할 문서 그룹을 수집하는 속도가 매우 빨라야 하므로 이를 더 작은 쿼리로 나눌 필요가 없습니다.

확인하시려면 여기에 추가 설명서가 있습니다.

MongoChef UI로 직접 찾으려면 다음 쿼리를 사용할 수 있습니다.

필드:{$in:[/Naveen Kumar/i, /Naveen/i, /Garshakurty/i]}}

언급URL : https://stackoverflow.com/questions/8219409/mongodb-in-operator-vs-lot-of-single-queries