MongoDBでドキュメントを1件だけ削除する方法
MongoDBでドキュメントを1件だけ削除する方法
MongoDBで条件に一致するドキュメントを1件だけ削除するには、remove()メソッドを使用します。ここでは、実際の動作を確認できるよう、サンプル用のコレクションを作成してドキュメントを挿入していきます。
まず、insertOne()メソッドを使って、コレクション「demo165」に3件のドキュメントを追加します。
> db.demo165.insertOne({"ClientId":101,"ClientName":"Chris","ClientAge":34});
{
"acknowledged" : true,
"insertedId" : ObjectId("5e36895c9e4f06af551997cc")
}
> db.demo165.insertOne({"ClientId":102,"ClientName":"Bob","ClientAge":32});
{
"acknowledged" : true,
"insertedId" : ObjectId("5e3689659e4f06af551997cd")
}
> db.demo165.insertOne({"ClientId":103,"ClientName":"David","ClientAge":35});
{
"acknowledged" : true,
"insertedId" : ObjectId("5e36896d9e4f06af551997ce")
}次に、find()メソッドを使って、コレクション内のすべてのドキュメントを表示します。
> db.demo165.find();
上記のクエリを実行すると、次のような出力が得られます。
{ "_id" : ObjectId("5e36895c9e4f06af551997cc"), "ClientId" : 101, "ClientName" : "Chris", "ClientAge" : 34 }
{ "_id" : ObjectId("5e3689659e4f06af551997cd"), "ClientId" : 102, "ClientName" : "Bob", "ClientAge" : 32 }
{ "_id" : ObjectId("5e36896d9e4f06af551997ce"), "ClientId" : 103, "ClientName" : "David", "ClientAge" : 35 }続いて、MongoDBからドキュメントを削除するクエリを見ていきましょう。ここでは、「ClientId」が102のドキュメントを1件だけ削除します。
> db.demo165.remove({"ClientId":102});
WriteResult({ "nRemoved" : 1 })「nRemoved : 1」と表示されていることから、1件のドキュメントが正常に削除されたことがわかります。もう一度find()メソッドを実行して、結果を確認してみましょう。
> db.demo165.find();
削除後の出力は次のとおりです。「ClientId」が102のドキュメントだけが取り除かれ、残りの2件はそのまま保持されています。
{ "_id" : ObjectId("5e36895c9e4f06af551997cc"), "ClientId" : 101, "ClientName" : "Chris", "ClientAge" : 34 }
{ "_id" : ObjectId("5e36896d9e4f06af551997ce"), "ClientId" : 103, "ClientName" : "David", "ClientAge" : 35 }補足:最新のMongoDBではdeleteOne()の使用を推奨
MongoDB 3.2以降では、remove()メソッドは非推奨(deprecated)となっており、代わりにdeleteOne()またはdeleteMany()の使用が公式に推奨されています。条件に一致するドキュメントを1件だけ削除したい場合は、次のように記述します。
> db.demo165.deleteOne({"ClientId":102});なお、remove()の第2引数にtrue(justOneオプション)を指定した場合も、条件に一致するドキュメントが複数あっても1件のみ削除されます。ただし、誤って全件削除してしまうリスクを避けるという観点からも、目的が明確なdeleteOne()を使用する方が安全です。
-
MongoDBでドキュメントの値を1つだけインクリメントする方法
MongoDBでドキュメント内の特定の値だけを更新し、インクリメント(加算)したい場合は、update()メソッドと$inc演算子を組み合わせて使用します。$incは指定したフィールドの数値を増減させるための演算子で、他のフィールドに影響を与えることなくピンポイントで値を変更できるのが特徴です。サンプルコレクションの作成まず、ドキュメントを格納したコレクションを作成します。> db.demo698.insertOne({Score:78});{ "acknowledged" : true, "insertedI
-
MongoDBで条件に一致するドキュメントを1件だけ取得する方法
MongoDBで、指定した検索条件に一致するドキュメントを1件だけ取得したい場合は、findOne()メソッドを使用します。findOne()は、コレクション内から条件を満たすドキュメントのうち、最初に見つかった1件のみを返すメソッドです。サンプルコレクションの作成まずは、動作確認用のコレクションにドキュメントを挿入してみましょう。> db.demo596.insertOne({_id:1,"FirstName":"John","LastName":"Smith"}); { "acknowledge