Как удалить один «документ» по «ID», используя официальный драйвер C # для MongoDB? - PullRequest
25 голосов
/ 15 января 2012

Может кто-нибудь показать мне, если есть лучший способ удалить один document из MongoDB с помощью Официального драйвера C # , чем то, что у меня ниже -

var query = Query.EQ("_id", a.Id);
database.GetCollection<Animal>("Animal").Remove(query);

Этокод работает, но мне кажется слишком много работы .Например, команда «Сохранить» - берет экземпляр и обновляет его.Я хочу что-то вроде - Remove(item).

Замечания: Я пытаюсь использовать официальный драйвер C # вместо NoRM или Samus который кажется устаревшим.

Ответы [ 4 ]

33 голосов
/ 15 января 2012

Вот как ты это делаешь. Я уверен, что вы это знаете, но если вы хотите поместить его в одну строку, вы можете объединить его, чтобы вам не нужно было определять переменную запроса:

collection.Remove(Query.EQ("_id", a.Id));
20 голосов
/ 28 июля 2014

Если [id] является строкой, вы должны явно использовать экземпляр ObjectId.

var query = Query.EQ("_id", ObjectId.Parse(id));
17 голосов
/ 07 февраля 2016

Самый простой способ

Удалить document из collection для C # Драйвер MongoDB (v2.0 или более поздняя версия) -

collection.DeleteOne(a => a.Id==id);

Or-

await collection.DeleteOneAsync(a => a.Id==id);
1 голос
/ 25 ноября 2017

Мой контроллер ASP.NET Core MVC принимает Id в качестве строкового параметра.Затем я анализирую его и использую результат в операторе DeleteOne ():

[HttpPost]
public IActionResult Delete(string id)
{
    ObjectId objectId = ObjectId.Parse(id);
    DbContext.Users.DeleteOne(x => x.Id == objectId);
    return null;
}
...