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 | $or | or条件 | 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 | $or | or条件 | db.コレクション名.find({$or:[{age:20},{age:30]}) |
「MongoDB Compass」から削除
「MongoDB Compass」 から削除する場合は、
対象の「ドキュメント」を選択して「ゴミ箱アイコン」をクリックします。
後は「DELETE」ボタンをクリックすれば削除完了です。
-
前の記事
GAS googleドライブにフォルダを作成する 2022.09.16
-
次の記事
gogs プルリクエスト(マージリクエスト)する 2022.09.16
コメントを書く