44

MongoDBが1秒あたり多くのリクエストを処理できることは知っていますが、_idを指定してコレクションの多くのドキュメントをクエリする必要があるとしましょう。何が良いと思いますか:取得したいすべてのIDを使用して_id属性に$ inを作成するか、findOneクエリをループしますか?

4

2 に答える 2

58

私は間違いなく$inクエリを使用し、_idの配列を提供します。

例:

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

なんで?

  • ループすると、クエリの作成とカーソルの枯渇ごとに一定量のセットアップとティアダウンが発生し、オーバーヘッドが発生します。
  • ローカルマシンでこれを行っていない場合は、すべての要求に対してtcp/ipオーバーヘッドも作成されます。ローカルでは、ドメインソケットを使用できます。
  • デフォルトで作成される「_id」にインデックスがあり、バッチリクエストで返すドキュメントのグループの収集は非常に高速であるため、これを小さなクエリに分割する必要はありません。

チェックアウトしたい場合は、ここにいくつかの追加のドキュメントがあります。

于 2011-11-21T22:53:26.213 に答える
0

MongoChef UIで直接検索する場合は、次のクエリを使用できます。

フィールド:{$ in:[/ Naveen Kumar / i、/ Naveen / i、/ Garshakurthy / i]}}

于 2021-06-19T04:30:01.490 に答える