mongodb は比較演算子と _ids の並べ替えをどのように適用しますか? _idのタイムスタンプ部分でそれを行いますか? また、objectId がクライアントまたはサーバーで生成された場合、違いはありますか?
もしそうなら、ページングはこのフィールドで信頼できますか? 例えば_id: { $gte: last_idOnPage }
タイムスタンプはBSON::ObjectId
値の最初の部分です。したがって、基本的にはい、最初にタイムスタンプでソートし、次に他の部分でソートします。
ObjectId()に関するドキュメントを見ると、_id が 12 バイトの数値を表す 16 進数の文字列であることがわかります。
したがって、部分的には正しいです。タイムスタンプを使用して値を並べ替えることもできます。しかし、他の部品も使用されます。この文字列は数値を表すため、mongo は単に数値を比較してどちらが大きいかを見つけます。
あなたの2番目の質問について(アプリケーション層またはデータベースによって生成された_idに違いはありますか):違いはありません。Mongo はまだ数値のみを比較します。