Saltar al contenido

¿Cómo puedo eliminar anidados? array elemento en un documento mongodb con el controlador c#

Después de observar en diversos repositorios y páginas webs al terminar descubrimos la solución que te mostraremos más adelante.

Solución:

Estás llamando al método Pull(string name, MongoDB.Bson.BsonValue value) y según los documentos

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

y usted proporciona "Identifier", productId como el valor. Supongo que mongo no encuentra eso exacto valor.

Trate de usar la segunda sobrecarga de Pull con condición de consulta en lugar de valor exacto

Elimina todos los valores del nombrado array elemento que coincida con alguna consulta (ver $pull).

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

ACTUALIZAR

Ya que mencionas Category entidad por lo que puedo sugerir el uso de lambda en lugar de
Query.EQ:

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

Solución con C# MongoDB Driver. Eliminar un solo elemento anidado.

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

También estaba enfrentando el mismo problema y finalmente, después de hacer mucha I + D, llegué a saber que tenía que usar PullFilter en lugar de Pull cuando desea eliminar usando el filtro.

Comentarios y puntuaciones de la guía

Te invitamos a defender nuestra investigación dejando un comentario y dejando una valoración te damos las gracias.

¡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 *