Tengo una colección como esta:
{ "citizen":[ { "country":"ITA", "language":"Italian" }, { "country":"UK", "language":"English" }, { "country":"CANADA", "language":"French" }] }Estoy intentando actualizar la colección pero con una determinada condición. Necesito actualizar eliminar un elemento de la matriz ciudadano si el valor en el campo país tiene más de 3 caracteres.
Obtuve que para eliminar un elemento tengo que usar $pull , para verificar el tamaño de una cadena tengo que usar $strLenCP y $gt es mayor que, pero estoy luchando para juntarlos.
El resultado de la actualización debería ser:
{ "citizen":[ { "country":"ITA", "language":"Italian" }, { "country":"UK", "language":"English" }] }¿Alguna sugerencia?
EDITAR: con la colección, tal como está, el comando:
db.getCollection('COLLECTION').update( { }, { $pull: {"citizen": {"country": /^[\s\S]{4,}$/}}}, { multi: true })funciona perfectamente. Lo probé en otra colección como esta:
{ "cittadino":{ "citizen":[ { "country":"ITA", "language":"Italian" }, { "country":"UK", "language":"English" }, { "country":"CANADA", "language":"French" }] } }y ya no actualiza. ¿Qué tengo que hacer?
Estás en el camino correcto:
db.getCollection('COLLECTION').update( { }, { $pull: {"citizen": {"country": /^[\s\S]{4,}$/}}}, { multi: true })El operador$pull toma un valor o una condición. Debe usar esto para filtrar la matriz según la propiedad "país"
EDITAR:
Use la notación de puntos para acceder al documento anidado
db.getCollection('COLLECTION').update( { }, { $pull: {"cittadino.citizen": {"country": /^[\s\S]{4,}$/}}}, { multi: true })