2012-01-15 20 views
23

Ai đó có thể xin vui lòng cho tôi xem, nếu có một cách tốt hơn để loại bỏ một document từ MongoDB sử dụng Official C# Driver hơn những gì tôi có liệt kê dưới đâyLàm thế nào để loại bỏ một 'tài liệu' bằng 'ID' bằng cách sử dụng trình điều khiển C# chính thức cho MongoDB?

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

Mã này hoạt động, nhưng dường như quá nhiều việc với tôi. Ví dụ, lệnh "Lưu" sẽ lấy một cá thể và cập nhật nó. Tôi muốn một cái gì đó như- Remove(item).

Ghi chú: Tôi đang cố gắng sử dụng trình điều khiển chính thức của C# thay vì NoRM hoặc Samus dường như đã lỗi thời.

Trả lời

32

Đó là cách bạn thực hiện. Tôi chắc rằng bạn biết điều này, nhưng nếu bạn muốn đặt nó trên một dòng, bạn có thể kết hợp nó để bạn không cần xác định biến truy vấn:

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

Tôi đang cố gắng để loại bỏ bởi một lĩnh vực khác hơn là _id, và tôi đã cố gắng Query.EQ ("FieldName", giá trị) nhưng nó đã không 't làm việc. Tôi nên làm như thế nào? Thực ra, mã của bạn cũng có cùng một lỗi: "chỉ các lớp có thể được ánh xạ hiện tại". –

+0

Bạn có đang sử dụng quyền sử dụng hàng nhập không? –

+0

Tôi chỉ nhận ra rằng tôi đã sử dụng một truy vấn LINQ, không phải là Query.EQ() ở trên, và tôi đoán đó là vấn đề bởi vì nó làm việc khi tôi thay đổi nó để Query.EQ() truy vấn. Cảm ơn bạn đã giúp đỡ. –

17

Nếu [id] là chuỗi, bạn phải sử dụng dụ ObjectId một cách rõ ràng.

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

Tôi đã gặp sự cố khi sửa câu trả lời này. Cảm ơn. Được thăng hạng. –

10

Các ĐƠN GIẢN NHẤT cách để loại bỏ một document từ một collection cho C# MongoDB.Driver phiên bản 2.0 hoặc later-

collection.DeleteOne(a => a.Id==id); 
0
hành động

My ASP.NET MVC Lõi điều khiển của chấp nhận Id như một tham số chuỗi. Sau đó, tôi phân tích nó và sử dụng kết quả trong DeleteOne() tuyên bố:

[HttpPost] 
public IActionResult Delete(string id) 
{ 
    ObjectId objectId = ObjectId.Parse(id); 
    DbContext.Users.DeleteOne(x => x.Id == objectId); 
    return null; 
} 
Các vấn đề liên quan