mongoDB 先頭にあるドキュメント(レコード)だけを削除する

mongoDB 先頭にあるドキュメント(レコード)だけを削除する

mongoDBで、先頭にあるドキュメント(レコード)だけを削除する手順を記述してます。mongoDB6では「remove」は非推奨なので「deleteOne」を使用して削除します。

環境

  • OS CentOS Stream release 9
  • MongoDB 6.0.2

手順

先頭にあるドキュメント(レコード)だけを削除するには、「deleteOne({}, true)」の第2引数に「true」を指定します。

db.コレクション名.deleteOne({}, true)

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

> db.foo.find()
[
  {
    _id: ObjectId("639aaa566dcdc72cf1d5b3bb"),
    name: 'itiro',
    age: 10,
    gender: 'm'
  },
  {
    _id: ObjectId("639aaa566dcdc72cf1d5b3bc"),
    name: 'jiro',
    age: 20,
    gender: 'm'
  },
  {
    _id: ObjectId("639aaa566dcdc72cf1d5b3bd"),
    name: 'saburo',
    age: 30,
    gender: 'm'
  },
  {
    _id: ObjectId("639aaa566dcdc72cf1d5b3be"),
    name: 'jiro',
    age: 25,
    gender: 'f'
  },
  {
    _id: ObjectId("639aaa576dcdc72cf1d5b3bf"),
    name: 'jiro',
    age: 30,
    gender: 'x'
  }
]

削除します。

> db.foo.deleteOne({}, true)

{ acknowledged: true, deletedCount: 1 }

最初の1件だけ削除されていることが、確認できます。

> db.foo.find()
[
  {
    _id: ObjectId("639aaa566dcdc72cf1d5b3bc"),
    name: 'jiro',
    age: 20,
    gender: 'm'
  },
  {
    _id: ObjectId("639aaa566dcdc72cf1d5b3bd"),
    name: 'saburo',
    age: 30,
    gender: 'm'
  },
  {
    _id: ObjectId("639aaa566dcdc72cf1d5b3be"),
    name: 'jiro',
    age: 25,
    gender: 'f'
  },
  {
    _id: ObjectId("639aaa576dcdc72cf1d5b3bf"),
    name: 'jiro',
    age: 30,
    gender: 'x'
  }
]

MongoDB5の場合

MongoDB5の場合は、「remove({}, true)」の第2引数に「true」を指定します。

db.コレクション名.remove({}, true)

同じように、以下のデータベース「hoge」にある「foo」というコレクション(テーブル)のドキュメント(レコード)を使用して動作を確認してみます。

> use hoge

> db.foo.find()

{ "_id" : ObjectId("61b6dbe43d393774a1cf22cb"), "name" : "itiro", "age" : 10, "gender" : "m" }
{ "_id" : ObjectId("61b6dbe83d393774a1cf22cc"), "name" : "jiro", "age" : 20, "gender" : "m" }
{ "_id" : ObjectId("61b6dbed3d393774a1cf22cd"), "name" : "saburo", "age" : 30, "gender" : "m" }
{ "_id" : ObjectId("61b6dc4c3d393774a1cf22ce"), "name" : "jiro", "age" : 25, "gender" : "f" }
{ "_id" : ObjectId("61b6dc503d393774a1cf22cf"), "name" : "jiro", "age" : 30, "gender" : "x" }

削除します。

> db.foo.remove({}, true)

最初の1件だけ削除されていることが、確認できます。

> db.foo.find()

{ "_id" : ObjectId("61b6dbe83d393774a1cf22cc"), "name" : "jiro", "age" : 20, "gender" : "m" }
{ "_id" : ObjectId("61b6dbed3d393774a1cf22cd"), "name" : "saburo", "age" : 30, "gender" : "m" }
{ "_id" : ObjectId("61b6dc4c3d393774a1cf22ce"), "name" : "jiro", "age" : 25, "gender" : "f" }
{ "_id" : ObjectId("61b6dc503d393774a1cf22cf"), "name" : "jiro", "age" : 30, "gender" : "x" }
{ "_id" : ObjectId("61c29ab1f6fd759ae708cdeb"), "name" : "siro", "age" : 22, "gender" : "f" }