Saltar al contenido

¿Cómo puedo eliminar un elemento de matriz anidado en un documento mongodb con el controlador c #?

Solución:

Estás llamando al método Pull(string name, MongoDB.Bson.BsonValue value) y de acuerdo con los documentos

Elimina todos los valores del elemento de matriz nombrado que son iguales a algún valor (ver $ pull)

y tu proporcionas { "Identifier", productId } como el valor. Supongo que mongo no encuentra eso exacto valor.

Intente utilizar la segunda sobrecarga de Pull con condición de consulta en lugar de valor exacto

Elimina todos los valores del elemento de matriz nombrado que coinciden con alguna consulta (ver $ pull).

var update = Update.Pull("Products", Query.EQ("Identifier", productId));

ACTUALIZAR

Desde que mencionas Category entidad para que pueda sugerir el uso de lambda en lugar de
Query.EQ:

var pull = Update<Category>.Pull(x => x.Products, builder =>
builder.Where(q => q.Identifier == productId));

Solución con el controlador C # MongoDB. Elimina un solo elemento anidado.

var filter = Builders<YourModel>.Filter.Where(ym => ym.Id == ymId);
var update = Builders<YourModel>.Update.PullFilter(ym => ym.NestedItems, Builders<NestedModel>.Filter.Where(nm => nm.Id == nestedItemId));
_repository.Update(filter, update);

También estaba enfrentando el mismo problema y finalmente, después de hacer mucho I + D, llegué a saber que tienes que usar PullFilter en lugar de Pull cuando quieras eliminar usando filter.

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *