$regex no hace nada

import pymongo
conn=pymongo.MongoClient(“mongodb://localhost:27017”)
database=conn[“Python”]
collection=database[“user”]
query={“age”:{"$regex":"^21"}}
count=collection.delete_many(query)
print(count.deleted_count,“documents deleted”)
for a in collection.find():
print(a)
se supone que al traer regex busque los campos similares al age para despues eliminar los pero no elimina nada en la bd y hay campos con ese valor ayuda

Hola @Fernando_Duarte_Meji, Bienvenido al foro de la comunidad de MongoDB.

Regex es para buscar cadenas con un patrón específico. Su criterio de búsqueda especifica buscar valores de campo de age que comiencen con “21”. El campo age es una string o un número (number)?

Supongo que el campo “age” es un número. En tal caso, puede intentar usar una consulta como una de estas dependiendo de los documentos que desee eliminar:

query = { 'age': { '$gte': 21 } }

query = { 'age': { '$gte': 21, '$lte': 30 } }

Referencia: Query Comparison Operators.

Tenga en cuenta que utilicé Google Translate para escribir en español.

1 Like


Thank you very much but it still won’t let me delete anything in the console

Hi @Fernando_Duarte_Meji,

As @Prasad_Saya mentioned, regular expressions can only be used to match patterns in strings.

Your documents have numeric values so there will be no matching documents to delete with $regex.

You can use comparison query operators like $gte (greater than or equal to) to match a range of numeric values, as per Prasad’s examples.

If you want an exact match on 25, you would use:

query = {"age": 25}

Regards,
Stennie

Thank you very much they have helped me a lot.