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

MongoDBで配列フィールドを逆順に反転させる方法【サンプルコード付き】

MongoDBで配列フィールドを逆順に反転させる方法

MongoDBで配列フィールドの要素の順序を反転させたい場合、forEach()メソッドを活用することで簡単に実現できます。この記事では、実際のコマンド例を交えながら、その手順をわかりやすく解説します。

ステップ1:サンプルコレクションの作成

まず、insertOne()メソッドを使って、配列フィールドを持つドキュメントを含むコレクションを作成しましょう。

> db.reverseArrayDemo.insertOne({"Skills":["C","Java"]});
{
   "acknowledged" : true,
   "insertedId" : ObjectId("5ccddf99dceb9a92e6aa1946")
}

ステップ2:登録したドキュメントの確認

find()メソッドを使用すると、コレクション内のすべてのドキュメントを表示できます。

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

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

{
   "_id" : ObjectId("5ccddf99dceb9a92e6aa1946"),
   "Skills" : [
      "C",
      "Java"
   ]
}

ステップ3:配列フィールドを逆順にするクエリ

ここからが本題です。forEach()update()を組み合わせることで、配列フィールドの要素を逆順に入れ替えられます。

> db.reverseArrayDemo.find().forEach(function (myDocument) {
...    var arrayValue = [ myDocument.Skills[1], myDocument.Skills[0] ];
...    db.reverseArrayDemo.update(myDocument, { $set: {Skills : arrayValue } });
... });

このクエリの処理の流れは以下の通りです。

  • myDocument.Skills[1]myDocument.Skills[0]を入れ替えた新しい配列を生成
  • $set演算子を使い、元の配列フィールドを新しい配列で上書き更新

ステップ4:実行結果の確認

もう一度find()メソッドでドキュメントを表示し、配列が正しく反転しているか確認してみましょう。

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

出力結果を見ると、「Skills」フィールドの要素が「Java」「C」の順に並び替えられていることがわかります。

{
   "_id" : ObjectId("5ccddf99dceb9a92e6aa1946"),
   "Skills" : [
      "Java",
      "C"
   ]
}

補足:任意の長さの配列に対応させるには

上記の例は要素が2つの配列を前提としていますが、JavaScriptのreverse()メソッドを利用すれば、任意の要素数の配列にも柔軟に対応できます。

db.reverseArrayDemo.find().forEach(function (doc) {
  db.reverseArrayDemo.updateOne(
    { _id: doc._id },
    { $set: { Skills: doc.Skills.slice().reverse() } }
  );
});

なお、旧式のupdate()メソッドは現在非推奨のため、最新のMongoDBではupdateOne()updateMany()の使用が推奨されています。また、slice()を挟んでいるのは、元の配列を直接変更せずにそのコピーを操作するためです。

  1. JavaScriptの配列reverse()メソッドとは?使い方とサンプルコードを解説

    JavaScriptのreverse()メソッドは、配列の要素を逆順に並べ替えるために使用されるメソッドです。呼び出すと元の配列そのものが反転され、その結果の配列が戻り値として返されます。構文array.reverse()reverse()メソッドのポイント引数は不要で、呼び出した配列自体を直接書き換えます(破壊的なメソッド)。戻り値は、要素が反転された配列への参照です。元の配列を変更せずに反転したい場合は、ES2023で追加されたtoReversed()メソッドを使うと便利です。それでは、実際にJavaScriptでreverse()メソッドを実装してみましょう。例1:基本的な使い方<

  2. 【初心者向け】JavaScriptのreverse()メソッドで配列を逆順にする方法

    JavaScriptのreverse()メソッドは、配列の要素を元の順序と逆順に入れ替えるための便利な関数です。このメソッドを呼び出すと、配列の最初の要素が最後に、最後の要素が最初に移動し、配列全体が反転されます。reverse()メソッドの基本reverse()は配列そのものを変更する「破壊的メソッド」である点に注意してください。つまり、元の配列の順序が直接書き換えられます。元の配列を保持したい場合は、あらかじめslice()やスプレッド構文([...arr])などでコピーを作成してからreverse()を使用するのがおすすめです。サンプルコード以下は、ボタンをクリックすると配列の要素が逆順