Can someone please show me, if there is a better way to remove one document
from MongoDB using the Official C# Driver than what I have below-
var query = Query.EQ("_id", a.Id);
database.GetCollection<Animal>("Animal").Remove(query);
This code works, but seems too much work to me. The "Save" command for example- takes an instance and updates it. I want something like- Remove(item)
.
Remarks: I'm trying to use the official driver of C# rather than NoRM or Samus which seems out of date.
That's the way you do it. I'm sure you know this, but if you want to put it on one line you could combine it so you don't need to define a query variable:
collection.Remove(Query.EQ("_id", a.Id));
If the [id] is string, you must use ObjectId instance explicitly.
var query = Query.EQ("_id", ObjectId.Parse(id));
The simplest way to remove a document
from a collection
for C# MongoDB.Driver version 2.0 or later is:
collection.DeleteOne(a => a.Id == id);
or
await collection.DeleteOneAsync(a => a.Id == id);
My ASP.NET Core MVC controller's action accepts Id as a string parameter. Then I parse it and use the result in the DeleteOne() statement:
[HttpPost]
public IActionResult Delete(string id)
{
ObjectId objectId = ObjectId.Parse(id);
DbContext.Users.DeleteOne(x => x.Id == objectId);
return null;
}