mongoDB ドキュメント(レコード)のプロパティ名を変更する
mongoDBで、ドキュメント(レコード)のプロパティ名を変更する手順を記述してます。「db.コレクション名.updateOne()」で最初に見つかった値を「db.コレクション名.updateMany()」で全て変更可能です。「db.コレクション名.update()」は「6」ではとなってます。
環境
- OS CentOS Stream release 9
- MongoDB 6.0.2
手順
ドキュメント(レコード)のプロパティ名を変更するには、
「db.コレクション名.updateOne()」か「db.コレクション名.updateMany()」を使用します。
※「db.コレクション名.update()」は「6」では非推奨となります。
実際にデータを作成してアップデートしてみます。
test> db.foo.insertMany([{ "name" : "itiro", "age" : 10, "gender" : "m" },
... { "name" : "jiro", "age" : 20, "gender" : "m" },
... { "name" : "saburo", "age" : 30, "gender" : "m" },
... { "name" : "jiro", "age" : 25, "gender" : "f" },
... { "name" : "jiro", "age" : 30, "gender" : "x" },
... ]);
{
acknowledged: true,
insertedIds: {
'0': ObjectId("636233b77c4cb89d6c5c570f"),
'1': ObjectId("636233b77c4cb89d6c5c5710"),
'2': ObjectId("636233b77c4cb89d6c5c5711"),
'3': ObjectId("636233b77c4cb89d6c5c5712"),
'4': ObjectId("636233b77c4cb89d6c5c5713")
}
}
「name」が「jiro」である最初のものの「age」を「chage」に変更してみます。
> db.foo.updateOne( { name:'jiro' }, { $rename:{ age: "chage" } } )
{
acknowledged: true,
insertedId: null,
matchedCount: 1,
modifiedCount: 1,
upsertedCount: 0
}
変更されていることが確認できます。
> db.foo.find()
[
{
_id: ObjectId("636233b77c4cb89d6c5c570f"),
name: 'itiro',
age: 10,
gender: 'm'
},
{
_id: ObjectId("636233b77c4cb89d6c5c5710"),
name: 'jiro',
gender: 'm',
chage: 20
},
<省略>
]
全て更新する場合は「updateMany」を使用します。
> db.foo.updateMany( { name:'jiro' }, { $rename:{ age: "chage" } } )
{
acknowledged: true,
insertedId: null,
matchedCount: 3,
modifiedCount: 2,
upsertedCount: 0
}
test> db.foo.find()
[
{
_id: ObjectId("636233b77c4cb89d6c5c570f"),
name: 'itiro',
age: 10,
gender: 'm'
},
{
_id: ObjectId("636233b77c4cb89d6c5c5710"),
name: 'jiro',
gender: 'm',
chage: 20
},
{
_id: ObjectId("636233b77c4cb89d6c5c5711"),
name: 'saburo',
age: 30,
gender: 'm'
},
{
_id: ObjectId("636233b77c4cb89d6c5c5712"),
name: 'jiro',
gender: 'f',
chage: 25
},
{
_id: ObjectId("636233b77c4cb89d6c5c5713"),
name: 'jiro',
gender: 'x',
chage: 30
}
]
mongoDb5
環境
- OS Ubuntu 20.04
- MongoDB 5.0.5
mongoDb5では、ドキュメント(レコード)のプロパティ名を変更するには、「db.コレクション名.update()」を使用します。
db.コレクション名.update({ プロパティを指定 }, { $rename:{ 変更するプロパティ : 変更語のプロパティ })
実際に、以下のデータベース「hoge」にある「foo」というコレクション(テーブル)のドキュメント(レコード)のプロパティを変更してみます。
> use hoge
> db.foo.find()
{ "_id" : ObjectId("61b17ec1cf8b8f769c13688b"), "name" : "itiro", "age" : 10, "gender" : "m" }
{ "_id" : ObjectId("61b17ec5cf8b8f769c13688c"), "name" : "jiro", "age" : 20, "gender" : "m" }
{ "_id" : ObjectId("61b17ec9cf8b8f769c13688d"), "name" : "saburo", "age" : 30, "gender" : "m" }
{ "_id" : ObjectId("61b17ecdcf8b8f769c13688e"), "name" : "jiro", "age" : 25, "gender" : "f" }
{ "_id" : ObjectId("61b17ed0cf8b8f769c13688f"), "name" : "jiro", "age" : 30, "gender" : "x" }
プロパティ「name」が「jiro」である最初のものの「age」を「chage」に変更します。
> db.foo.update( { name:'jiro' }, { $rename:{ age: "chage" } } )
WriteResult({ "nMatched" : 1, "nUpserted" : 0, "nModified" : 1 })
変更されていることが確認できます。
> db.foo.find()
{ "_id" : ObjectId("61b17ec1cf8b8f769c13688b"), "name" : "itiro", "age" : 10, "gender" : "m" }
{ "_id" : ObjectId("61b17ec5cf8b8f769c13688c"), "name" : "jiro", "gender" : "m", "chage" : 30 }
{ "_id" : ObjectId("61b17ec9cf8b8f769c13688d"), "name" : "saburo", "age" : 30, "gender" : "m" }
{ "_id" : ObjectId("61b17ecdcf8b8f769c13688e"), "name" : "jiro", "age" : 25, "gender" : "f" }
{ "_id" : ObjectId("61b17ed0cf8b8f769c13688f"), "name" : "jiro", "age" : 30, "gender" : "x" }
全て変更する場合は、第4引数に「true」を指定します。
※第3引数を「true」にすると、指定したプロパティがなければデータが挿入されます。
> db.foo.update( { name:'jiro' }, { $rename:{ age: "chage" } },false,true )
WriteResult({ "nMatched" : 3, "nUpserted" : 0, "nModified" : 2 })
2件、更新されていることが確認できます。
> db.foo.find()
{ "_id" : ObjectId("61b17ec1cf8b8f769c13688b"), "name" : "itiro", "age" : 10, "gender" : "m" }
{ "_id" : ObjectId("61b17ec5cf8b8f769c13688c"), "name" : "jiro", "gender" : "m", "chage" : 30 }
{ "_id" : ObjectId("61b17ec9cf8b8f769c13688d"), "name" : "saburo", "age" : 30, "gender" : "m" }
{ "_id" : ObjectId("61b17ecdcf8b8f769c13688e"), "name" : "jiro", "gender" : "f", "chage" : 25 }
{ "_id" : ObjectId("61b17ed0cf8b8f769c13688f"), "name" : "jiro", "gender" : "x", "chage" : 30 }
もしくは、「multi」を使用しても複数更新可能です。
> db.foo.update( { name:'jiro' }, { $rename:{ chage: "age" } }, { multi:true } )
WriteResult({ "nMatched" : 3, "nUpserted" : 0, "nModified" : 3 })
-
前の記事
mongoDB 複数のドキュメント(レコード)を一括更新する 2022.09.27
-
次の記事
PostgreSQL 現在のセッションのサーバー側のプロセスIDを取得する 2022.09.27
コメントを書く