ほげほげ

プログラミング、英会話、ヨガ、料理などの備忘録など。

mongo ドキュメント内の配列の件数を指定して取得

ドキュメント内の配列の件数が多い場合など、ページングのようにいくつかの件数毎に取得したかったので、調査しました。

テストデータのインサート(ブログ記事を例に、1記事のドキュメント内に、コメントの配列が複数ある設定)

db.articles.insert({'author':'hoge','body':'bodybodybody',
 'comments':['c1','c2','c3','c4','c5','c6','c7','c8','c9','c10']}) ;

件数を指定して操作する例

// 先頭から5件のコメント
db.articles.find(
  {author:'hoge'},
  {comments:{$slice:5}}
) ;

// 末尾から5件のコメント
db.articles.find(
  {author:'hoge'},
  {comments:{$slice:-5}}
) ;

// 先頭から3件スキップして次の3件のコメント
db.articles.find(
  {author:'hoge'},
  {comments:{$slice:[3,3]}}
) ;