$slice (配列の部分抽出)

最終更新:2026-10-09

$slice (配列の部分抽出)

射影での $slice は、ドキュメントを変更せずに配列フィールドの一部を返します。`{ tags: { $slice: 2 } }` は先頭 2 要素を返し、`{ tags: { $slice: [1, 3] } }` は 1 要素スキップして 3 要素を返します。最初の数件のコメントや添付ファイルだけを表示する一覧ページでよく使われます。更新修飾子の $slice と同じ名前ですが、役割が異なります。

カテゴリ投影
MongoDB バージョン2.4+
例の言語mongosh(シェル)

📝 構文

{ <array field>: { $slice: <count> } } or { <array field>: { $slice: [ <skip>, <count> ] } }

⚙️ パラメータ

配列フィールドスライスする配列フィールド。
数または配列先頭 N 件の件数、またはスキップ後に取得する [skip, count]。

戻り値:指定した配列サブセットで射影されたドキュメント

▶ 例

以下のコマンドをローカルの mongosh で実行してください(mongod が起動済みである必要があります):

// $slice: 最初の 3 つのタグだけを返す
db.articles.find(
  { _id: 1 },
  { title: 1, tags: { $slice: 3 } }
)

// 1 つスキップして 2 つ取得
db.articles.find(
  { _id: 1 },
  { comments: { $slice: [1, 2] } }
)

出力:

// タイトルと最初の 3 つのタグを返す。2 つ目のクエリはコメントを 1 つスキップして 2 つ取得する

📌 注意事項

📚 関連チュートリアル

❓ よくある質問

Q射影の $slice と更新の $slice は同じものですか?
A違います。射影の $slice は結果の形を整え、更新の $slice は $push 後の配列長を制限します。
Q配列の末尾の要素を取得するには?
A負の値を使います。{ tags: { $slice: -3 } } で最後の 3 要素を取得できます。
Q$slice は他の射影と組み合わせられますか?
Aはい。競合しない限り組み合わせ可能です。
Web-Tutorial.com

Web-Tutorial 技術チーム

複数の開発者によって共同維持されているプログラミングチュートリアルプラットフォーム。各チュートリアルは専門分野の開発者が執筆・レビューしています。正確で信頼性の高いコンテンツを目指しています — 問題を見つけた場合はお知らせください。

100%