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

MongoDBで配列から単一の値をポップ(削除)する方法

MongoDBで配列から単一の値をポップする方法

MongoDBでは、JavaScriptの pop() メソッドを使うことで、配列フィールドの末尾から値を取り出して削除できます。ここでは、シェル上でドキュメントを取得し、pop() を実行した後に変更を保存するまでの一連の手順を解説します。

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

まず、サンプルとなるドキュメントを含むコレクションを作成しましょう。

> db.persistChangeDemo.insertOne({"Name" : "Larry", "CreditScore": [500,700,760,100]});
{
   "acknowledged" : true,
   "insertedId" : ObjectId("5cdfc52cbf3115999ed51203")
}

2. ドキュメントの確認

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

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

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

{
   "_id" : ObjectId("5cdfc52cbf3115999ed51203"),
   "Name" : "Larry",
   "CreditScore" : [
      500,
      700,
      760,
      100
   ]
}

3. pop()メソッドで値を取り出す

次に、対象のドキュメントを変数に取得してから、配列に対して pop() を実行します。

> myDocument = db.persistChangeDemo.findOne();
> myDocument.CreditScore.pop();
100

この例では、配列の末尾にある「100」が返され、同時に配列から削除されます。

4. 変更内容の保存

pop() の実行結果をデータベースに反映させるには、save() メソッドでドキュメントを保存し直します。

> db.persistChangeDemo.save(myDocument);
WriteResult({ "nMatched" : 1, "nUpserted" : 0, "nModified" : 1 })

5. 更新結果の確認

もう一度ドキュメントを確認してみましょう。

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

出力を見ると、「CreditScore」配列から最後の値「100」が取り除かれていることが分かります。

{
   "_id" : ObjectId("5cdfc52cbf3115999ed51203"),
   "Name" : "Larry",
   "CreditScore" : [
      500,
      700,
      760
   ]
}

補足:$pop演算子を使ったより効率的な方法

実際のアプリケーション開発では、ドキュメントを一度取得して書き戻す代わりに、更新演算子の $pop を使うのが一般的です。$pop1 を指定すると配列の末尾の要素を、-1 を指定すると先頭の要素をそれぞれ削除できます。

> db.persistChangeDemo.updateOne(
... { "Name": "Larry" },
... { $pop: { "CreditScore": 1 } }
... );

この方法なら、単一のアトミックな操作で配列の要素を削除できるため、競合のリスクが少なく、パフォーマンス面でも有利です。用途に応じて使い分けるとよいでしょう。

  1. MongoDBで昇順にデータを並べ替える方法【sort()の使い方を解説】

    MongoDBで昇順(小さい値から大きい値へ)にデータを並べ替えるには、find()メソッドと組み合わせてsort()メソッドを使用します。昇順で並べ替える場合は、対象のフィールド名に対して「1」を指定するのが基本構文です。db.yourCollectionName.find().sort({yourField: 1});なお、降順(大きい値から小さい値へ)で並べ替えたい場合は、「-1」を指定します。サンプルコレクションの作成実際の動作を確認するため、まずはドキュメントを含むコレクションを作成しましょう。以下のクエリでは、「sortingDemo」というコレクションに数値を持つドキュメントを順

  2. 1つのコマンドでMongoDBを安全に停止する方法|shutdownServerの使い方を解説

    単一コマンドでMongoDBを停止する方法 MongoDBサーバーを1つのコマンドで停止したい場合は、mongoシェルの--evalオプションを使い、adminデータベースに対してshutdownServer()を実行するのが最も簡単な方法です。 使用するコマンドの基本構文は以下の通りです。 mongo --eval db.getSiblingDB(admin).shutdownServer() getSiblingDB(admin)でadminデータベースに切り替えてからshutdownServer()を呼び出すことで、接続中のMongoDBサーバーをシャットダウンできます。 実行手順 そ