mongoDB ドキュメント(レコード)のプロパティに値を加算する

mongoDB ドキュメント(レコード)のプロパティに値を加算する

mongoDBで、ドキュメント(レコード)のプロパティに値を加算する手順を記述してます。mongoDB6では「update()」は非推奨になっているため「updateOne」を使用します。

環境

  • OS CentOS Stream release 9
  • MongoDB 6.0.2

手順

ドキュメント(レコード)のプロパティに値を加算するには、「db.コレクション名.updateOne()」で「$inc」を使用します。

db.コレクション名.updateOne({ プロパティを指定 }, { $inc:{ 追加する値 })

実際に、以下のデータベース「testdb」にある「foo」というコレクション(テーブル)のドキュメント(レコード)のプロパティを加算してみます。

> use testdb

> db.foo.find()

[
  {
    _id: ObjectId("6364bda406a29c57f191d1c7"),
    name: 'itiro',
    age: 10,
    gender: 'm'
  },
  {
    _id: ObjectId("6364bda406a29c57f191d1c8"),
    name: 'jiro',
    age: 20,
    gender: 'm'
  },
  {
    _id: ObjectId("6364bda406a29c57f191d1c9"),
    name: 'saburo',
    age: 30,
    gender: 'm'
  }
]

プロパティ「name」が「jiro」のものの「age」を「10」加算します。

>  db.foo.update( { name:'jiro' }, { $inc:{ age: 10 } } )

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

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

> db.foo.find()

[
  {
    _id: ObjectId("6364bda406a29c57f191d1c7"),
    name: 'itiro',
    age: 10,
    gender: 'm'
  },
  {
    _id: ObjectId("6364bda406a29c57f191d1c8"),
    name: 'jiro',
    age: 30,
    gender: 'm'
  },
  {
    _id: ObjectId("6364bda406a29c57f191d1c9"),
    name: 'saburo',
    age: 30,
    gender: 'm'
  }
]

減算する場合は、「-(マイナス)」を指定します。

> db.foo.update( { name:'jiro' }, { $inc:{ age: -10 } } )

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

複数を更新する場合は「updateMany」を使用します。

> db.foo.updateMany( { gender:'m' }, { $inc:{ age: -10 } } )
{
  acknowledged: true,
  insertedId: null,
  matchedCount: 3,
  modifiedCount: 3,
  upsertedCount: 0
}

MongoDB5

環境

  • OS CentOS Stream release 9
  • MongoDB 6.0.2

MongoDB5では、「db.コレクション名.update()」で「$inc」を使用します。

db.コレクション名.update({ プロパティを指定 }, { $inc:{ 追加する値 })

同様に、以下のデータベース「testdb」にある「foo」というコレクション(テーブル)のドキュメント(レコード)のプロパティを加算してみます。

> use testdb

> db.foo.find()

{ "_id" : ObjectId("61ad8a5a6b99b585a9389a04"), "name" : "itiro", "age" : 10, "gender" : "m" }
{ "_id" : ObjectId("61ad8a666b99b585a9389a05"), "name" : "jiro", "age" : 20, "gender" : "m" }
{ "_id" : ObjectId("61ad8a746b99b585a9389a06"), "name" : "saburo", "age" : 30, "gender" : "m" }

プロパティ「name」が「jiro」のものの「age」を「10」加算します。

>  db.foo.update( { name:'jiro' }, { $inc:{ age: 10 } } )

WriteResult({ "nMatched" : 1, "nUpserted" : 0, "nModified" : 1 })

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

> db.foo.find()

{ "_id" : ObjectId("61ad93886b99b585a9389a07"), "name" : "itiro", "age" : 10, "gender" : "m" }
{ "_id" : ObjectId("61ad93946b99b585a9389a08"), "name" : "jiro", "age" : 32, "gender" : "m" }
{ "_id" : ObjectId("61ad9ea6dc806f9b4c1ddb81"), "name" : "saburo", "age" : "30", "gemder" : "m" }

減算する場合は、「-(マイナス)」を指定します。

> db.foo.update( { name:'jiro' }, { $inc:{ age: -10 } } )

WriteResult({ "nMatched" : 1, "nUpserted" : 0, "nModified" : 1 })