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

MongoDBで配列の最初の4つの値をスキップし、次の3つの値を表示する方法

MongoDBでは、配列フィールドの先頭から指定した数の要素を無視し、その後の要素だけを取得したいケースがあります。そんなときに便利なのが $slice 演算子です。$slice に「[スキップする要素数, 表示する要素数]」という形式の配列を渡すことで、簡単に実現できます。

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

まず、ドキュメントを含むコレクションを作成しましょう。

> db.demo693.insertOne({Values:[10,746,736,283,7363,424,3535]});
{
    "acknowledged" : true,
    "insertedId" : ObjectId("5ea58a04ece4e5779399c07b")
}
> db.demo693.insertOne({Values:[100,200,300,100,500,700,900,30000,40003,45999]});
{
    "acknowledged" : true,
    "insertedId" : ObjectId("5ea58a1eece4e5779399c07c")
}

すべてのドキュメントを表示する

find() メソッドを使って、コレクション内のすべてのドキュメントを確認します。

> db.demo693.find();

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

{ "_id" : ObjectId("5ea58a04ece4e5779399c07b"), "Values" : [ 10, 746, 736, 283, 7363, 424, 3535 ] }
{ "_id" : ObjectId("5ea58a1eece4e5779399c07c"), "Values" : [ 100, 200, 300, 100, 500, 700, 900, 30000, 40003, 45999 ] }

$slice を使って最初の4つをスキップし、次の3つを表示する

以下のクエリでは、$slice に [4, 3] を指定することで、配列の最初の4つの値を無視し、続く3つの値のみを表示しています。

> db.demo693.find({},{Values:{$slice:[4,3]}});

実行結果は以下の通りです。

{ "_id" : ObjectId("5ea58a04ece4e5779399c07b"), "Values" : [ 7363, 424, 3535 ] }
{ "_id" : ObjectId("5ea58a1eece4e5779399c07c"), "Values" : [ 500, 700, 900 ] }

$slice のポイント

$slice に2つの値を持つ配列を渡した場合、最初の値が「スキップする要素数」、2番目の値が「返却する最大要素数」として扱われます。なお、スキップ数に負の値を指定すると、配列の末尾から数えてスキップすることも可能です。これにより、ページネーションや部分的なデータ取得など、柔軟な配列操作が実現できます。

  1. 【MongoDB】ネストされたドキュメントのキー名のみを抽出して表示する方法

    MongoDBでは、配列内にネストされたドキュメント(サブドキュメント)のキー名だけを一覧として取得したいケースがあります。本記事では、insertOne()でサンプルデータを作成し、find()で内容を確認した後、集計パイプラインの$reduce、$objectToArray、$map、$concatArraysを組み合わせて、ネストされたドキュメントのキー名のみを抽出する方法を実行例付きで解説します。 1. サンプルコレクションの作成 まず、insertOne()メソッドを使って、detailsフィールドに複数のドキュメントを持つ配列を含むコレクションを作成します。 > db.dem

  2. MySQLでNULL値を除外して残りの値だけを表示する方法

    MySQLでは、IS NOT NULL演算子を使うことで、NULL値を除外し、実際に値が存在するレコードだけを取得・表示できます。本記事では、サンプルテーブルを作成しながら、具体的な手順をわかりやすく解説します。 1. テーブルを作成する まず、学生名とスコアを格納するテーブルを作成します。 mysql> create table DemoTable1458     -> (     -> StudentName varchar(20),     ->