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

MongoDBコレクションのフィールド名(列名)を変更する方法

MongoDBはドキュメント指向データベースのため、厳密にはリレーショナルデータベースのような「列」という概念は存在せず、代わりに「フィールド」と呼ばれます。しかし、RDBの列名に相当するフィールド名を変更したいケースはよくあります。MongoDBでは、$rename演算子を使うことで、既存のドキュメントのフィールド名を簡単に変更できます。

$rename演算子の基本構文

db.yourCollectionName.update({}, {$rename: {'yourOldColumName': 'yourNewColumnName'}}, false, true);

第3引数のfalseはアップサート(upsert)を無効にし、第4引数のtrueはマルチ(multi)オプションを有効にして、コレクション内のすべてのドキュメントに変更を適用することを意味します。

サンプルコレクションの作成

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

> db.renamingColumnNameDemo.insertOne({"StudentName":"Larry","Age":23});
{
    "acknowledged" : true,
    "insertedId" : ObjectId("5c9ee2c6d628fa4220163b9a")
}
> db.renamingColumnNameDemo.insertOne({"StudentName":"Sam","Age":26});
{
    "acknowledged" : true,
    "insertedId" : ObjectId("5c9ee2d0d628fa4220163b9b")
}
> db.renamingColumnNameDemo.insertOne({"StudentName":"Robert","Age":27});
{
    "acknowledged" : true,
    "insertedId" : ObjectId("5c9ee2dbd628fa4220163b9c")
}

変更前のドキュメントを確認する

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

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

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

{
    "_id" : ObjectId("5c9ee2c6d628fa4220163b9a"),
    "StudentName" : "Larry",
    "Age" : 23
}
{
    "_id" : ObjectId("5c9ee2d0d628fa4220163b9b"),
    "StudentName" : "Sam",
    "Age" : 26
}
{
    "_id" : ObjectId("5c9ee2dbd628fa4220163b9c"),
    "StudentName" : "Robert",
    "Age" : 27
}

$renameでフィールド名を変更する

ここで、フィールド「Age」を「StudentAge」に変更してみます。

> db.renamingColumnNameDemo.update({}, {$rename: {'Age': 'StudentAge'}}, false, true);
WriteResult({ "nMatched" : 3, "nUpserted" : 0, "nModified" : 3 })

実行結果のnModified : 3から、3件すべてのドキュメントが更新されたことがわかります。

変更結果の確認

再度find()メソッドを実行して、「Age」が「StudentAge」に変更されたか確認しましょう。

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

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

{
    "_id" : ObjectId("5c9ee2c6d628fa4220163b9a"),
    "StudentName" : "Larry",
    "StudentAge" : 23
}
{
    "_id" : ObjectId("5c9ee2d0d628fa4220163b9b"),
    "StudentName" : "Sam",
    "StudentAge" : 26
}
{
    "_id" : ObjectId("5c9ee2dbd628fa4220163b9c"),
    "StudentName" : "Robert",
    "StudentAge" : 27
}

すべてのドキュメントで「Age」フィールドが「StudentAge」に正常にリネームされました。

補足:新しいバージョンではupdateMany()を推奨

MongoDB 4.2以降では、update()メソッドにマルチオプションを渡す書き方は非推奨(deprecated)となっています。代わりにupdateMany()を使用するのが現代的な書き方です。

db.renamingColumnNameDemo.updateMany({}, {$rename: {'Age': 'StudentAge'}});

この方法でも同じ結果が得られ、コードの意図もより明確になります。

  1. MongoDBでコレクションの名前を変更する方法(renameCollectionの使い方)

    MongoDBで既存のコレクションの名前を変更したい場合、renameCollection()メソッドを使用します。この記事では、実際にコレクションを作成し、その名前を変更するまでの手順を順番に解説します。1. ドキュメントを含むコレクションを作成するまず、insertOne()メソッドを使ってサンプルドキュメントを挿入し、コレクション「demo690」を作成します。> db.demo690.insertOne({_id:101,Name:Sam}); { acknowledged : true, insertedId : 101 } > db.demo690.insertOne(

  2. MongoDBコレクションにインデックスを作成する方法

    MongoDBコレクションにインデックスを作成する方法MongoDBでインデックスを作成するには、createIndex()メソッドを使用します。インデックスを適切に設定することで、クエリの検索速度を大幅に向上させることができます。まず、ドキュメントを含むコレクションに対してインデックスを作成してみましょう。以下の例では、details.idフィールドに対して昇順(1)のインデックスを作成しています。> db.demo702.createIndex({details.id:1});{   createdCollectionAutomatically : tr