$slice (配列の部分取得)

最終更新:2026-10-09

$slice (配列の部分取得)

$slice は配列の一部を取り出します。2 引数形式は先頭から n 個(n が負なら末尾から n 個)を、3 引数形式は n 個スキップしてから指定件数を取ります。コメントのページング、最新注文の取得、返すタグ数の上限などに使われます。元の配列を変更せず新しい配列を返し、null の引数は null になります。文字列用の $substr に相当する配列版です。

カテゴリ配列
MongoDB バージョン1.0+
例の言語mongosh(シェル)

📝 構文

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

⚙️ パラメータ

配列スライスする配列。
数取得する要素数。2引数形式で負の場合は、末尾から n 個を取得します。
スキップ任意。3引数形式で最初にスキップする要素数。負の場合は末尾から逆に数えます。

戻り値:抽出された部分配列。引数が null の場合は null

▶ 例

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

// $slice: 先頭の 3 タグを取得
db.posts.aggregate([
  { $project: {
      topTags: { $slice: ['$tags', 3] }
  } }
])

出力:

{ '_id': 1, 'topTags': [ 'mongo', 'db', 'nosql' ] }

📌 注意事項

📚 関連チュートリアル

❓ よくある質問

Q$slice で末尾の要素を取るには?
A負の件数を使います。末尾 3 個なら { $slice: ['$arr', -3] }。
Qページングできますか?
Aはい — { $slice: ['$arr', 10, 10] } で 10 個スキップして 10 個取れます。
Q長さを超えるとエラーになりますか?
Aいいえ — null で埋めずに、存在する要素だけを返します。
Web-Tutorial.com

Web-Tutorial 技術チーム

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

100%