programing

'에 의해 하나의 '문서'를 제거하는 방법MongoDB의 공식 C# 드라이버를 사용하는 ID?

topblog 2023. 6. 22. 21:25
반응형

'에 의해 하나의 '문서'를 제거하는 방법MongoDB의 공식 C# 드라이버를 사용하는 ID?

누군가 저에게 보여주실 수 있나요, 만약 더 좋은 방법이 있다면.documentMongoDB에서 공식 C# 드라이버를 사용하여 아래에 있는 것보다 -

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

이 코드는 작동하지만, 저에게는 너무 많은 인 것 같습니다.예를 들어 "저장" 명령은 인스턴스를 가져와 업데이트합니다.그런 걸 원해요Remove(item).

비고:저는 구식으로 보이는 NoRM이나 Samus보다는 C#의 공식 드라이버를 사용하려고 합니다.

그게 당신이 하는 방식입니다.알고 계시겠지만, 한 줄로 묶고 싶다면 쿼리 변수를 정의할 필요가 없도록 결합할 수 있습니다.

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

가장 간단한 방법

제거documenta부터collectionC# MongoDB 드라이버용(v2.0 이상)-

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

아니면..

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

[id]가 문자열인 경우 ObjectId 인스턴스를 명시적으로 사용해야 합니다.

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

내 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;
}
var filter = Builders<BsonDocument>.Filter.Eq("_id",ObjectId.Parse(id));
var x = data.DeleteOne(filter);

현재 버전(2019년)과 함께 사용하고 있으며, 작동합니다.

삭제만 원하는 경우docuementa부터collection:

public async Task<bool> Delete(string id)
{
    FilterDefinition<YourModel> filter = Builders<YourModel>.Filter.Eq(p => p.Id, id);

    var deleteResult = await _context.YourModelCollection.DeleteOneAsync(filter);

    return deleteResult.IsAcknowledged && deleteResult.DeletedCount > 0;
}

그리고 만약 당신이 모든 것을 삭제하고 싶다면.docuements:

public async Task<bool> DeleteAll()
{
    FilterDefinition<YourModel> filter = Builders<YourModel>.Filter.Empty;

    var deleteResult = await _context.YourModelCollection.DeleteManyAsync(filter);

    return deleteResult.IsAcknowledged && deleteResult.DeletedCount > 0;
}

언급URL : https://stackoverflow.com/questions/8867032/how-to-remove-one-document-by-id-using-the-official-c-sharp-driver-for-mongo

반응형