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.