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
'source' 카테고리의 다른 글
| UIColor가 어두운지 밝은지 확인하십시오. (0) | 2023.05.28 |
|---|---|
| SQL Server 테이블에서 n개의 임의 행 선택 (0) | 2023.05.28 |
| pip 또는 설치 패키지를 업데이트하려고 할 때 "경고: scheme.data 값이 일치하지 않음" (0) | 2023.05.28 |
| .NET 4.5의 기본 보안 프로토콜 (0) | 2023.05.28 |
| "관리"와 "관리되지 않음"의 차이 (0) | 2023.04.19 |