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

【MongoDB】上限付きコレクション(Capped Collection)の単一フィールドを更新する方法

上限付きコレクションのフィールドを更新するには

capped: true を設定したコレクション(上限付きコレクション)内のフィールドを更新するには、update() メソッドを使用します。まずは、実際にドキュメントを格納したコレクションを作成して確認していきましょう。

1. 上限付きコレクションの作成とドキュメントの挿入

以下のコマンドで、サイズと最大ドキュメント数を指定した上限付きコレクション「Demo112」を作成し、ドキュメントを挿入します。

> db.createCollection("Demo112", { capped : true, size : 14, max : 3 } );
{ "ok" : 1 }
> db.demo112.insertOne({"Name":"Chris"});
{
    "acknowledged" : true,
    "insertedId" : ObjectId("5e2ef47a9fd5fd66da21447e")
}
> db.demo112.insertOne({"Name":"David"});
{
    "acknowledged" : true,
    "insertedId" : ObjectId("5e2ef47e9fd5fd66da21447f")
}
> db.demo112.insertOne({"Name":"David"});
{
    "acknowledged" : true,
    "insertedId" : ObjectId("5e2ef4919fd5fd66da214480")
}

2. 挿入されたドキュメントの確認

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

> db.demo112.find();

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

{ "_id" : ObjectId("5e2ef47a9fd5fd66da21447e"), "Name" : "Chris" }
{ "_id" : ObjectId("5e2ef47e9fd5fd66da21447f"), "Name" : "David" }
{ "_id" : ObjectId("5e2ef4919fd5fd66da214480"), "Name" : "David" }

3. update() による単一フィールドの更新

次のクエリでは、条件に一致する複数のドキュメントをまとめて更新できるよう、第三引数に {multi:true} を指定しています。更新内容は $set 演算子で指定します。

> db.demo112.update(
...     {Name:"David"},
...     {$set:{Name: "Robert"}},
...     {multi:true}
... )
WriteResult({ "nMatched" : 2, "nUpserted" : 0, "nModified" : 2 })

結果を見ると、「David」という値を持つ2件のドキュメントが正常に更新されたことがわかります。

4. 更新後のドキュメントの確認

再度 find() メソッドを実行して、コレクション内の全ドキュメントを確認します。

> db.demo112.find();

実行結果は以下の通りです。「Name」フィールドが「Robert」に書き換えられているのが確認できます。

{ "_id" : ObjectId("5e2ef47a9fd5fd66da21447e"), "Name" : "Chris" }
{ "_id" : ObjectId("5e2ef47e9fd5fd66da21447f"), "Name" : "Robert" }
{ "_id" : ObjectId("5e2ef4919fd5fd66da214480"), "Name" : "Robert" }

ポイントまとめ

  • 上限付きコレクションでも通常のコレクションと同様に update() メソッドでフィールドを更新できます。
  • 条件に一致するすべてのドキュメントを更新したい場合は {multi:true} オプションを指定します。
  • フィールドの値を変更する際は $set 演算子を使用します。
  1. MongoDBで単一フィールドのみを取得する方法【find()のプロジェクション解説】

    MongoDBで単一フィールドを選択する基本構文MongoDBでは、find()メソッドの第2引数に「プロジェクション(射影)」を指定することで、コレクションから特定のフィールドだけを取得できます。単一のフィールドを選択する場合の基本構文は以下のとおりです。db.yourCollectionName.find({yourFieldName:yourValue},{yourSingleFieldName:1,_id:0});この構文において、yourSingleFieldName:1 は「指定したフィールドを取得する」ことを意味し、_id:0 は「_idフィールドを結果から除外する」ことを意味し

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

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