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

MongoDBページネーションの範囲クエリ

    ページネーションの構文は間違っていますが、ObjectId()を使用することはまったく問題ありません。必要なもの:

     db.tweets.find().limit(50).sort({"_id":-1});
    

    これは、ツイートを_idで並べ替えたいことを示しています 値が降順で、最新の50が必要です。問題は、現在の結果セットが変更されているときにページ付けが難しいという事実です。したがって、次のページにスキップを使用するのではなく、最小の_id 結果セット(50番目に新しい_id 値を入力してから、次のページを取得します:

     db.tweets.find( {_id : { "$lt" : <50th _id> } } ).limit(50).sort({"_id":-1});
    

    これにより、次の「最新の」ツイートが表示されます。新しい着信ツイートが時間の経過とともにページネーションを台無しにすることはありません。

    _idかどうかを心配する必要はまったくありません。 値は挿入順序に厳密に対応します-99.999%十分に近く、ツイートが最初に来た1秒未満のレベルを実際に気にする人は誰もいません-Twitterが頻繁にツイートを順番どおりに表示しないことに気付くかもしれませんが、それほど重要ではありません。

    の場合 重要な場合は、同じ手法を使用する必要がありますが、「ツイート日」では、その日付を単なる日付ではなくタイムスタンプにする必要があります。



    1. MongoDBに自動インクリメントのプライマリIDをどのように実装しますか?

    2. UbuntuのGolangにあるMongoCloudmongodbデータベースに接続できません

    3. マングースでObjectIdを生成するにはどうすればよいですか?

    4. マングースfind()、結果ドキュメントにアクセスする方法は?