mongoDB 指定したプロパティのドキュメント(レコード)を削除する

mongoDB 指定したプロパティのドキュメント(レコード)を削除する

mongoDBで、指定したプロパティのドキュメント(レコード)を削除する手順を記述してます。mongo6では「remove」は非推奨になっているため「deleteMany」を使用します。

環境

  • OS CentOS Stream release 9
  • MongoDB 6.0.2

手順

指定したプロパティのドキュメント(レコード)を削除するには、「db.コレクション名.deleteMany()」に
「プロパティ」を指定します。
※最初に見つかったものだけを削除する場合は「deleteOne」を使用します。

db.コレクション名.deleteMany({ プロパティを指定 })

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

> use hoge

> db.foo.find()

[
  {
    _id: ObjectId("6368ba7acbd6720d0fb92c21"),
    name: 'itiro',
    age: 10,
    gender: 'm'
  },
  {
    _id: ObjectId("6368ba7acbd6720d0fb92c22"),
    name: 'jiro',
    gender: 'x',
    age: 35
  },
  {
    _id: ObjectId("6368ba7acbd6720d0fb92c23"),
    name: 'saburo',
    age: 30,
    gender: 'm'
  },
  {
    _id: ObjectId("6368ba7acbd6720d0fb92c24"),
    name: 'jiro',
    gender: 'x',
    age: 35
  },
  {
    _id: ObjectId("6368ba7acbd6720d0fb92c25"),
    name: 'jiro',
    gender: 'x',
    age: 35
  },
  {
    _id: ObjectId("6368ba7acbd6720d0fb92c26"),
    name: 'siro',
    age: 55,
    gender: 'm'
  }
]

プロパティ「name」が「jiro」のものを削除します。

> db.foo.deleteMany( { name:'jiro' })

{ acknowledged: true, deletedCount: 3 }

削除されていることが確認できます。

> db.foo.find()

[
  {
    _id: ObjectId("6368bad5cbd6720d0fb92c27"),
    name: 'itiro',
    age: 10,
    gender: 'm'
  },
  {
    _id: ObjectId("6368bad5cbd6720d0fb92c29"),
    name: 'saburo',
    age: 30,
    gender: 'm'
  },
  {
    _id: ObjectId("6368bad5cbd6720d0fb92c2c"),
    name: 'siro',
    age: 55,
    gender: 'm'
  }
]

条件を指定することも可能です。「age」が25以上ものを削除します。

> db.foo.deleteMany( { age:{$gt:25} })

{ acknowledged: true, deletedCount: 2 }

> db.foo.find()

[
  {
    _id: ObjectId("6368bad5cbd6720d0fb92c27"),
    name: 'itiro',
    age: 10,
    gender: 'm'
  }
]

指定できる条件は以下のようになります。

演算子Mongo演算子内容
<$lt右辺より小さい{ age:{$lt:20} }
<=$lte右辺以下{ age:{$lte:20} }
>$gt右辺より大きい{ age:{$gt:20} }
>=$gte右辺以上{ age:{$gte:20} }
!=$ne等しくない{ name:{$ne:’jiro’} }
ANDなしand条件{name:’jiro’, age: 20}
OR$oror条件db.コレクション名.find({$or:[{age:20},{age:30]})

mongodb5

環境

  • OS Ubuntu 20.04
  • MongoDB 5.0.5

mongodb5の場合は、「db.コレクション名.remove()」に「プロパティ」を指定します。

db.コレクション名.remove({ プロパティを指定 })

同じようように、ドキュメント(レコード)を削除してみます。

> use hoge

> db.foo.find()

{ "_id" : ObjectId("61b17ec1cf8b8f769c13688b"), "name" : "itiro", "age" : 10, "gender" : "m" }
{ "_id" : ObjectId("61b17ec5cf8b8f769c13688c"), "name" : "jiro", "gender" : "x", "age" : 35 }
{ "_id" : ObjectId("61b17ec9cf8b8f769c13688d"), "name" : "saburo", "age" : 30, "gender" : "m" }
{ "_id" : ObjectId("61b17ecdcf8b8f769c13688e"), "name" : "jiro", "gender" : "x", "age" : 35 }
{ "_id" : ObjectId("61b17ed0cf8b8f769c13688f"), "name" : "jiro", "gender" : "x", "age" : 35 }
{ "_id" : ObjectId("61b18c46b9ee956059be9780"), "name" : "siro", "age" : 55, "gender" : "m" }

こちらも同様に、プロパティ「name」が「jiro」のものを削除します。

> db.foo.remove( { name:'jiro' })

WriteResult({ "nRemoved" : 3 })

削除されていることが確認できます。

> db.foo.find()

{ "_id" : ObjectId("61b17ec1cf8b8f769c13688b"), "name" : "itiro", "age" : 10, "gender" : "m" }
{ "_id" : ObjectId("61b17ec9cf8b8f769c13688d"), "name" : "saburo", "age" : 30, "gender" : "m" }
{ "_id" : ObjectId("61b18c46b9ee956059be9780"), "name" : "siro", "age" : 55, "gender" : "m" }

条件を指定することも可能です。同じように「age」が25以上ものを削除します。

> db.foo.remove( { age:{$gt:25} })

WriteResult({ "nRemoved" : 2 })

> db.foo.find()

{ "_id" : ObjectId("61b17ec1cf8b8f769c13688b"), "name" : "itiro", "age" : 10, "gender" : "m" }

指定できる条件は以下のようになります。

演算子Mongo演算子内容
<$lt右辺より小さい{ age:{$lt:20} }
<=$lte右辺以下{ age:{$lte:20} }
>$gt右辺より大きい{ age:{$gt:20} }
>=$gte右辺以上{ age:{$gte:20} }
!=$ne等しくない{ name:{$ne:’jiro’} }
ANDなしand条件{name:’jiro’, age: 20}
OR$oror条件db.コレクション名.find({$or:[{age:20},{age:30]})

「MongoDB Compass」から削除

「MongoDB Compass」 から削除する場合は、
対象の「ドキュメント」を選択して「ゴミ箱アイコン」をクリックします。

後は「DELETE」ボタンをクリックすれば削除完了です。