2012-01-15 16 views
23

Puede alguien por favor me muestran, si hay una mejor manera de quitar una document de MongoDB utilizando el Official C# Driver de lo que tengo a continuación-¿Cómo eliminar un 'documento' por 'ID' usando el controlador oficial C# para MongoDB?

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

funciona este código, pero parece demasiado trabajo a mí. El comando "Guardar", por ejemplo, toma una instancia y la actualiza. Quiero algo como- Remove(item).

Observaciones: estoy tratando de utilizar el controlador oficial de C# en lugar de NoRM o Samus que parece fuera de fecha.

Respuesta

32

Así es como lo haces. Estoy seguro de que sabe esto, pero si usted quiere ponerlo en una línea que podría combinar de modo que no es necesario definir una variable de consulta:

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

Estoy tratando de eliminar mediante un campo distinto _id, y he intentado Query.EQ ("FieldName", valor) pero didn no funciona ¿Cómo debo hacer eso? En realidad, su código da el mismo error: "solo las clases se pueden asignar actualmente". –

+0

¿Está usando el derecho usando importaciones? –

+0

Me acabo de dar cuenta de que utilicé una consulta linq, no el Query.EQ() anterior, y supongo que ese fue el problema porque funcionó cuando lo cambié a la consulta Query.EQ(). Gracias por tu ayuda. –

17

Si el [id] es cadena, debe usar la instancia de ObjectId explícitamente.

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

Estaba teniendo un problema que soluciona esta pregunta. Gracias. Upvoted. –

10

El forma más sencilla de eliminar un document de un collection para C# MongoDB.Driver versión 2.0 o más tarde-

collection.DeleteOne(a => a.Id==id); 
0
acción

de controlador Mi ASP.NET Core MVC acepta Id como una parámetro de cadena Entonces analizarlo y utilizar el resultado en el DeleteOne() declaración:

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