0

Morphia 経由で Play 2 を使用して MongoDB の Web サイトに検索のログを保存しています。ログには、通常のクエリ用語と結果のリストが含まれています。したがって、基本的には次のようになります。

public class SearchLog {

    public String query;

    @Indexed
    @Reference(lazy = true, ignoreMissing = true)
    public List<Result> results;

    @Indexed
    @Embedded
    public LocalDateTime timestamp;

}

検索がいつ行われたか、結果に「これ」が含まれているかどうかに基づいてクエリを作成します。

Query q = q().filter("timestamp >=", start).filter("timestamp <=", end)
    .field("results").hasThisElement(something).order("timestamp").asList();

データベースには約 8000 のログ エントリがあり、各ログには約 10 ~ 20 の結果が含まれています。私がテストしているこの特定のクエリは、約 4000 のエントリを返します。ただし、インデックスを使用しても、クエリは非常に遅くなります (> 10 秒)。何か間違ったことをしましたか、MongoDB がクエリを実行する方法を最適化する方法はありますか?

ありがとう

4

0 に答える 0