How to remove one 'document' by 'ID

2019-01-23 23:46发布

问题:

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.

回答1:

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));


回答2:

If the [id] is string, you must use ObjectId instance explicitly.

var query = Query.EQ("_id", ObjectId.Parse(id));


回答3:

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);


回答4:

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;
}