sql >> データベース >  >> NoSQL >> MongoDB

インデックスを使用しても結果セットが大きい場合、mongodb.countDocumentsは遅くなります

    のように見えるを数える 安くなければならないものの1つですが、そうではないことがよくあります。 mongoは、bツリーインデックスの特定の基準に一致するドキュメントの数のカウントを維持しないため、ドキュメントをカウントするインデックスをスキャンする必要があります。つまり、ドキュメントを100倍カウントすると、100倍の時間がかかります。これは、おおよそここに表示されるものです-0.018 * 100 = 1.8s

    これをスピードアップするには、いくつかのオプションがあります:

    1. アクティブカウントはおおよそestimatedDocumentCount() - db.users.countDocuments({status: 'inactive'}) 。これはあなたのユースケースにとって十分正確ですか?
    2. または、countsを維持することもできます 所有しているアクティブ/非アクティブドキュメントの数と同期している別のコレクション内のドキュメント。



    1. Javaコードを使用してmongodbのフィールドを自動インクリメントするにはどうすればよいですか?

    2. 集計ステップで見つかったmax(value)を共有するすべてのドキュメントを検索します

    3. MongoDBでの複数の$incの更新

    4. 賛成票/反対票をmongodbに保存する