skip() (ドキュメントのスキップ)
最終更新:2026-10-09
skip() (ドキュメントのスキップ)
skip() はカーソルの最初の N 件を破棄します: `db.users.find().sort({ age: 1 }).skip(10)`。limit() と組んでページングに使います。skip() がオフセット、limit() がページサイズです。スキップされたドキュメントも走査する必要があるため、大きなオフセットは遅くなることに注意。大規模データセットでは、インデックス付きフィールドによるキーセットページングを推奨します。
| カテゴリ | カーソル |
|---|---|
| MongoDB バージョン | 1.0+ |
| 例の言語 | mongosh(シェル) |
📝 構文
db.<collection>.find(<filter>).skip(<count>)
⚙️ パラメータ
| 数 | スキップするドキュメント数。 |
|---|
戻り値:N ドキュメントをスキップしたカーソル(チェーン可能)。
▶ 例
以下のコマンドをローカルの mongosh で実行してください(mongod が起動済みである必要があります):
// skip: 11〜20件目(2ページ目)を取得する
const page2 = db.users.find().sort({ _id: 1 })
.skip(10).limit(10).toArray()
page2.length
出力:
10
📌 注意事項
- 大きなオフセットは skip を遅くする。破棄されるドキュメントもスキャンされる
- sort なしでは skip の結果は不安定。sort() と組み合わせる
- 大規模データセットではインデックスによるキーセットページングを推奨
🏷️ 関連タグ
💡 関連ケース
さらなる実践ケースを近日公開予定。
📚 関連チュートリアル
❓ よくある質問
Qなぜ skip ベースのページングは深くなると遅くなるのですか?
Askip(N) はまず N 件を走査して破棄するため、オフセットが大きいほどスキャンが増えます。深いページにはキーセットページングに切り替えてください。
Qsort なしで skip を使うとどうなりますか?
A順序が未定義になり、ページが重複したりドキュメントが抜けたりします。必ず skip() の前に sort() を使います。
Qskip(0) は何をしますか?
Askip(0) は何もスキップしません。カーソルをそのまま使うのと同じです。