私は間違いなく$inクエリを使用し、_idの配列を提供します。
例:
db.collection.find({
"key": {
"$in": [
ObjectId("xxx"),
ObjectId("yyy"),
ObjectId("zzz")
]
}
})
なぜですか?
- ループする場合、カーソルを作成および枯渇させるクエリごとに一定量のセットアップとティアダウンが発生し、オーバーヘッドが発生します。
- ローカルマシンでこれを行っていない場合は、リクエストごとにtcp/ipオーバーヘッドも発生します。ローカルでは、ドメインソケットを使用できます。
- デフォルトで作成される「_id」にインデックスがあり、バッチリクエストで返すドキュメントのグループを収集することは非常に高速であるため、これを小さなクエリに分割する必要はありません。
チェックアウトしたい場合は、ここにいくつかの追加のドキュメントがあります。