es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Obtener resultados de coincidencia de patrones distintos (subcadenas) desde PyMongo.

¿Cuál es la forma más eficiente de hacer una consulta a una colección de MongoDB para obtener subcadenas únicas/distintas en un campo dado?

Ejemplo de documentos:

{"_id": "1234.abc.test1", "some_key": "some_value"}
{"_id": "1234.abc.test2", "some_key": "some_value"}
{"_id": "0420.def.test3", "some_key": "some_value"}

Los ID de los documentos siguen una convención interna de nombres. Necesito saber cuáles son todos los elementos distintos de esa convención de nombres.

El resultado deseado de la consulta en la colección anterior:

1234
0420

Estoy tratando de evitar obtener el conjunto de datos completo solo para hacer row['_id'].split('.')[0] en cada fila posteriormente. Idealmente, la consulta debería devolver solo la lista distintiva de esas subcadenas.

Tags:  , , ,

Answer

  1. Avatar for davy.ai

    Para consultar de manera eficiente subcadenas distintas en un campo dado de una colección de MongoDB, puedes utilizar el método distinct() en pymongo.

    En este caso, puedes usar el método distinct() para obtener subcadenas distintas del campo _id dividiendo los valores por el carácter . y seleccionando el primer elemento de la lista resultante.

    Aquí tienes un ejemplo de consulta:

    distinct_values = db.collection_name.distinct('_id', {})
    distinct_substrings = [value.split('.')[0] for value in distinct_values]
    

    Esta consulta utiliza el método distinct() para obtener valores distintos de _id de la colección collection_name, y luego extrae las primeras subcadenas dividiendo cada valor por el carácter . y seleccionando el primer elemento de la lista resultante.

    El argumento vacío {} se utiliza para indicar que no hay condiciones de filtro para la consulta.

    Este método minimiza la cantidad de datos transferidos entre MongoDB y la aplicación, y devuelve las subcadenas distintas directamente.

Comments are closed.