Esto es con referencia a
Cómo eliminar un documento dentro de una matriz en mongodb usando $pull
Necesito eliminar los subconjuntos vacíos. Necesito codificar esta consulta en go lang
db.getCollection('workflows').update({<find condition>}, {$pull: {"workflows":[] } } )Así que he escrito el siguiente código
nquery := bson.D { {"level", "application"}, {"workflowName", workflowName}, {"applicationName", applicationName}, } nupdate := bson.M{"$pull": bson.M{"workflows":"[]"}} UpdateOne(getContext(), nquery, nupdate)El resultado de UpdateOne muestra que mi consulta ha coincidido pero no ha modificado nada. Así que supongo que hay algún problema con el nupdate. Qué estoy haciendo mal ?
La función UpdateOne es parte del controlador mongo para go lang
"[]" no es una matriz vacía en la consulta, es una cadena que tiene corchetes de apertura y cierre.
La matriz vacía de MongoDB se puede "modelar" con un segmento vacío en Go, por ejemplo, con un valor de tipo []interface{} , por lo que un literal compuesto de este tipo es []interface{}{} .
Así que usa esto:
nupdate := bson.M{"$pull": bson.M{"workflows": []interface{}{}}}Los corchetes "[]" no deben estar entre comillas ya que ahora se interpretan como una cadena ... , deben agregarse como corchetes [] y requieren en golang: &[]int{} para ser traducidos por el controlador mongo goland para vaciar la matriz ...