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. findOne in findOne result
- 4. schema.post( '検索')とschema.post( 'findOne')
- 5. Mongodbテキストフィルタを使用し、単一のクエリでグループ化するジオロケーションを検索
- 6. MongoDBを使用したファセット検索
- 7. Rails 3.単一項目のクエリ
- 8. tListBoxで改行した単一項目
- 9. プロジェクト単一のアレイ項目のMongoDBのC#
- 10. MongoDBと単語の全文検索
- 11. 一致する項目を並行して検索する
- 12. データソースとしてmongodbを使用したスフィンクス検索
- 13. MVVMを使用したコンテキストメニュー項目のWPF +バインディングコマンドと項目
- 14. Might GQL IN演算子を使用して、リストプロパティの項目を持つエンティティを検索できますか?
- 15. 単一の検索ボックスを使用してテキストボックスとドロップダウンフィールドを結合するためのJQuery検索
- 16. Node.js、Express、およびMongoDBを使用してISODateで検索
- 17. フルテキスト検索を使用した完全一致の検索
- 18. Lucene検索APIを使用した完全一致の検索
- 19. のMongoDBカウント項目
- 20. RxJavaリスト内の項目を検索
- 21. MYSQLdb - Pythonで単一項目を選択
- 22. Javaを使用したMongoDB ISODateフィールド検索
- 23. Mongodbとnodejsでの索引付けと検索のためのSolrの使用
- 24. 既知のインデックスを使用してリスト内の項目を検索する
- 25. リストの項目の検索方法
- 26. node-mongodb findOneの動作
- 27. MongoDBのレコードと一致しないレコードを検索します
- 28. CheckedListBox - テキストで項目を検索
- 29. Excelでリスト項目を検索する
- 30. PHPとMySQLを使用した単純なサイト検索
クエリでexplain()関数を使用するようにしてください。実行時間を比較する。次のようにしてシェルから実行できます。db.collection.findOne({_ id: "id"})。explain(); – felix
ありがとう@felix、私は 'explain()'を使用し、 'winning({id:{$ in:[some_id])}'と 'find({id:some_id})'を同じwinningPlanで実行しました! :) –