mongoDB フィールドを追加する

mongoDB フィールドを追加する

mongoDBで、フィールドを追加する手順を記述してます。「$set」で追加したいフィールドを指定します。既に指定したフィールドが存在する場合は、値が違えば更新されます。

環境

  • OS CentOS Stream release 9
  • MongoDB 6.0.2

手順

「updateOne」や「updateMany」で「$set」を使用します。

db.foo.updateOne( フィールド:値 {$set:{フィールド名:値}} );

実際に、以下のデータベース「hoge」にある「human」というコレクション(テーブル)のドキュメント(レコード)を使用して、追加してみます。

> use hoge

> db.human.find();

[
  { _id: ObjectId("6396ed2dc914f06e4f315763"), name: 'itiro', age: 10 },
  { _id: ObjectId("6396edb6c914f06e4f315764"), name: 'jiro', age: 20 },
  {
    _id: ObjectId("6396edc3c914f06e4f315765"),
    name: 'saburo',
    age: 30,
    address: 'tokyo'
  }
]

「address」というフィールドを追加してみます。

> db.human.update({"age":30}, {$set:{address:"tokyo"}});

{
  acknowledged: true,
  insertedId: null,
  matchedCount: 1,
  modifiedCount: 0,
  upsertedCount: 0
}

追加されていることが、確認できます。

> db.human.find()

[
  { _id: ObjectId("6396ed2dc914f06e4f315763"), name: 'itiro', age: 10 },
  { _id: ObjectId("6396edb6c914f06e4f315764"), name: 'jiro', age: 20 },
  {
    _id: ObjectId("6396edc3c914f06e4f315765"),
    name: 'saburo',
    age: 30,
    address: 'tokyo'
  }
]

既に値が存在刷る場合は、更新されます。

> db.human.update({"age":30}, {$set:{address:"osaka"}});
{
  acknowledged: true,
  insertedId: null,
  matchedCount: 1,
  modifiedCount: 1,
  upsertedCount: 0
}

> db.human.find()
[
  { _id: ObjectId("6396ed2dc914f06e4f315763"), name: 'itiro', age: 10 },
  { _id: ObjectId("6396edb6c914f06e4f315764"), name: 'jiro', age: 20 },
  {
    _id: ObjectId("6396edc3c914f06e4f315765"),
    name: 'saburo',
    age: 30,
    address: 'osaka'
  }
]