MongoDB
 Computer >> コンピューター >  >> プログラミング >> MongoDB

MongoDBで配列の最後の2つの値を取得する方法($slice演算子の使い方)

MongoDBで配列から最後の2つの値だけを取り出したい場合、$slice 演算子を使うのが便利です。$sliceに負の数(-2など)を指定すると、配列の末尾から指定した件数分の要素を取得できます。

コレクションの作成とドキュメントの挿入

まず、insertOne()メソッドを使ってサンプルのコレクションを作成し、ドキュメントを挿入します。

> db.demo173.insertOne({"ListOfValues":[10,40,100,560,700,900]});
{
   "acknowledged" : true,
   "insertedId" : ObjectId("5e383a4f9e4f06af551997e4")
}

find()メソッドですべてのドキュメントを表示

次に、find()メソッドを使ってコレクション内のすべてのドキュメントを表示してみましょう。

> db.demo173.find().pretty();

このクエリを実行すると、以下のような出力が得られます。

{
   "_id" : ObjectId("5e383a4f9e4f06af551997e4"),
   "ListOfValues" : [ 10, 40, 100, 560, 700, 900 ]
}

最後の2つの値を取得するクエリ

配列「ListOfValues」の最後の2つの値を取得するには、プロジェクションで $slice に -2 を指定します。負の値を指定することで、配列の末尾から要素が切り出されます。

> db.demo173.find({}, { "ListOfValues": { "$slice": -2 } } );

このクエリを実行すると、以下の出力が得られます。

{ "_id" : ObjectId("5e383a4f9e4f06af551997e4"), "ListOfValues" : [ 700, 900 ] }

ポイントまとめ

  • $slice に正の数を指定すると配列の先頭から、負の数を指定すると末尾から要素を取得できます。
  • -2 を指定した例では、元の配列 [10, 40, 100, 560, 700, 900] のうち、末尾の [700, 900] のみが返されています。
  • $slice はプロジェクションとして使えるため、find() や findOne() と組み合わせて柔軟に利用できます。
  1. MySQLでGROUP BYとHAVING句を使って2つの異なる値を持つレコードをすべて取得する方法

    MySQLである列(この例では学生名)ごとに、別の列(科目名)に2つ以上の異なる値が登録されているレコードをすべて取得したいケースはよくあります。たとえば、「MySQL」と「MongoDB」の両方を受講している学生だけを抽出したい場合などです。 このような条件でのデータ抽出には、GROUP BY句とHAVING句を組み合わせて使用します。以下、テーブル作成からクエリ実行までの手順をサンプルコードとともに解説します。 1. サンプルテーブルの作成 まず、学生名と科目名を格納するテーブルを作成します。 mysql> create table DemoTable751 (  &n

  2. MySQLで列内のすべての値の下3桁の合計を取得する方法

    はじめにMySQLである列に格納されたすべての値について、下3桁(末尾3桁)を抽出し、その合計を求めたい場合があります。このような処理を実現するには、集計関数SUM()と文字列関数RIGHT()を組み合わせて使用します。RIGHT()関数は文字列の右端から指定した文字数を取り出す関数で、RIGHT(列名, 3)と記述することで各値の末尾3桁を取得できます。さらにSUM()で包むことで、それらを一括して合計できる仕組みです。本記事では、実際にサンプルテーブルを作成し、データを挿入したうえで、下3桁の合計を取得するクエリの実行方法を順を追って解説します。サンプルテーブルの作成まず、CREATE T