3

次のことを達成しようとして問題が発生しました。

「無限」のスクロール機能とフェッチされたすべての結果を特定の属性でソートするページが欲しいのですが。コードが現在機能する方法は、クエリを配置し、結果を並べ替えて表示することです。問題は、ユーザーがページの下部に到達して新しいクエリが配置されると、このクエリの結果が並べ替えられることですが、それ自体のコンテキストになります。つまり、合計100件の結果があり、最初のクエリで50件しか表示されない場合、それらは並べ替えられます。ただし、次のクエリ(次の50)は、100(合計結果)ではなく、これらの50の結果のみに基づいて結果を並べ替えます。

それで、すべての結果を一度にフェッチして並べ替えてから、ページネーションロジックを適用する必要がありますか、それともMongoDBが結果に並べ替えを適用して実際に無限スクロール(AJAXリクエスト)を行う方法がありますか?

4

2 に答える 2

1

私は MongoDB の経験がありません (ただし、これが NoSQL データベースであることは認識しています)。

ただし、この質問は一般的なデータベースの質問のようなものです (おそらく、そのようにタグ付けされたより多くの回答が得られるでしょう)。Cassandra (別の、かなり異なる NoSQL データベース) を使用してこのような機能を実装しましたが、同じ原則が適用されます。

最後に取得したレコードの sorted-by 属性を使用して、データベース内で範囲検索を実行します。したがって、データベースが次の一連の文字で構成されていると仮定します。

A
B
C
D
E
F
G

..一度に 2 文字を取得していた場合は、A, B最初に取得します。さらにレコードが必要な場合は、B を使用して、データベース内の一連の文字に対して範囲検索を実行します。平易な英語では、これは次のようになります。

の後に現れる文字を取得しB、結果を 2 つに制限します

MongoDB チュートリアルを簡単に見てみると、これを実装するのに役立つ条件演算子があるようです。

于 2012-04-30T13:43:16.760 に答える