NodeJSサービスでMongoClientを使用しています。
私のサービスのパフォーマンスを向上させる一環として、Mongoを照会するという点で、複数のIDを持つ単一のIDを扱うときに、私が異なる動作をするべきかどうかを判断したいと考えています。
私の現在のコードは次のようになります。
collection.find({ id: {$in: ids } })
私は、単一のidは別に多少のように、任意のより良いパフォーマンスをするだろう処理するコードを分割するかどう知りたいと思った:
if ids.count == 1 collection.findOne({ id: ids.first }) else collection.find({ id: {$in: ids } }) end
答えて
NodeJSのMongoDBドライバによれば、findOneはfind()の代わりに非難されています。
非推奨、使用検索()。限界(1).next(関数(ERR、DOC){})の代わり
http://mongodb.github.io/node-mongodb-native/2.0/api/Collection.html#findOne
さらに、findOne()
があるの構文糖find().limit(1).toArray()
プロダクションで使用する前に何かが推奨されていないことを強くお勧めします。at that link
'findOne'は私の主な焦点ではありません。' {id:{$ in:[some_id]} 'で' find'を使うと議論しています。 :some_id} 'はパフォーマンスに影響します。 –
@BarakHariziベンチマークする場合は、廃止予定の機能を避ける必要があります。私は$ inと$ inでテストしました。結果は絶対に匹敵します(1msと1ms)。より良いアプローチ:「必要なものを使う」。だから個人的には、より良いアプローチとして「改善/改善」のスピードを避けるように提案することができます。 –
私はexplain()を使って実際にどのような勝利プランが得られたのかをよく理解しています。同じ勝利プランなので、単一/複数のアプローチでは分けないことに決めました。 –
- 1. MongoDBのクエリの単一のアレイ項目
- 2. 一般リストから項目を検索
- 3. 変数を使用した二項目検索
- 4. $ inと$または?を使用して値を検索するmongoDbクエリ
- 5. Wagtail StreamFieldの単一項目
- 6. schema.post( '検索')とschema.post( 'findOne')
- 7. MongoDBを使用したファセット検索
- 8. Mongodbテキストフィルタを使用し、単一のクエリでグループ化するジオロケーションを検索
- 9. Rails 3.単一項目のクエリ
- 10. findOne in findOne result
- 11. Linqを使用してカスタムクラスの項目を検索する
- 12. tListBoxで改行した単一項目
- 13. プロジェクト単一のアレイ項目のMongoDBのC#
- 14. 単一検索で複数の単語を検索するNSPredicateを使用してiOSを迅速に検索
- 15. MongoDBと単語の全文検索
- 16. GolangとMongoDBを使用したフルテキスト検索の実装
- 17. MVVMを使用したコンテキストメニュー項目のWPF +バインディングコマンドと項目
- 18. データソースとしてmongodbを使用したスフィンクス検索
- 19. 一致する項目を並行して検索する
- 20. MongoDBテキスト検索と複数の単語を含む単語の検索
- 21. 単一の検索ボックスを使用してテキストボックスとドロップダウンフィールドを結合するためのJQuery検索
- 22. Lucene検索APIを使用した完全一致の検索
- 23. フルテキスト検索を使用した完全一致の検索
- 24. Node.js、Express、およびMongoDBを使用してISODateで検索
- 25. Might GQL IN演算子を使用して、リストプロパティの項目を持つエンティティを検索できますか?
- 26. $ pullを使用してmongoDB配列から単一の項目を削除する
- 27. Nodejs 2つのmongodbコレクションから検索した後の単一のコールバック
- 28. REを使用して単語の一致を検索する
- 29. delphiのサブメニュー項目の親を検索
- 30. のMongoDBカウント項目
クエリでexplain()関数を使用するようにしてください。実行時間を比較する。次のようにしてシェルから実行できます。db.collection.findOne({_ id: "id"})。explain(); – felix
ありがとう@felix、私は 'explain()'を使用し、 'winning({id:{$ in:[some_id])}'と 'find({id:some_id})'を同じwinningPlanで実行しました! :) –