web-dev-qa-db-ja.com

MongoDBの公式C#ドライバーを使用して、「ID」で1つの「ドキュメント」を削除する方法

公式C#ドライバー を使用してdocumentをMongoDBから削除するより良い方法がある場合、誰かが私に教えてもらえますか?

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

このコードは機能しますが、私には作業が多すぎるようです。たとえば、「保存」コマンドはインスタンスを取得して更新します。 -Remove(item)のようなものが欲しい。

備考:NoRM または Samus ではなく、C#の公式ドライバを使用しようとしています古くなっているようです。

26
Travis Laborde

それがあなたのやり方です。私はあなたがこれを知っていると確信していますが、1行に配置したい場合は、それを組み合わせてクエリ変数を定義する必要がないようにすることができます。

collection.Remove(Query.EQ("_id", a.Id));
33
Eve Freeman

[id]が文字列の場合、ObjectIdインスタンスを明示的に使用する必要があります。

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

最も簡単な方法

documentからcollectionを削除しますC#MongoDB Driver(v2.0以降)-

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

または

await collection.DeleteOneAsync(a => a.Id==id);
17
Minhas Kamal

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;
}
1
Aleksei Mialkin