API Obtener método para obtener todos los tweets con el hashtag recuento mayor que en MongoDB en formato JSON

votos
0

Tengo una base de datos MongoDB que contiene una serie de tweets. Quiero ser capaz de obtener todos los tweets en la lista de JSON a través de mi API que contienen una serie de hashtags greather que el especificado por el usuario en la URL (por ejemplo, http: // localhost: 5000 /? Tuits morethan = 5 , que es 5 en este caso).

Los hashtags están contenidos dentro de la columna entidades en la base de datos, junto con otras columnas como user_mentions, URL, los símbolos y los medios de comunicación. Aquí está el código que he escrito hasta ahora pero tampoco devuelve nada.

#!flask/bin/python

app = Flask(__name__)

@app.route('/tweets', methods=['GET'])
def get_tweets():
# Connect to database and pull back collections

db = client['mongo']
collection = db['collection']

parameter = request.args.get('morethan')

if parameter:
    gt_parameter = int(parameter) + 1  # question said greater than not greater or equal
    key_im_looking_for = entities.hashtags.{}.format(gt_parameter)  # create the namespace#
    cursor = collection.find({key_im_looking_for: {$exists: True}})

EDIT: FUNCIONA!

Publicado el 27/11/2018 a las 16:53
fuente por usuario
En otros idiomas...                            


1 respuestas

votos
1

El código en cuestión es esta línea

cursor = collection.find({"entities": {"hashtags": parameter}})

Esta respuesta explica por qué es imposible llevar a cabo directamente lo que se le pregunte.

mongodb consulta: tamaño $ con $ gt devuelve siempre 0

Esa respuesta también describe las ideas posibles (pero pobres) para conseguir alrededor de él.

La mejor sugerencia es modificar todos sus documentos y poner una clave "num_hashtags" en alguna parte, el índice de eso, y consulta en contra de ella.

El uso de la API de Twitter JSON se podría actualizar todos los documentos y poner una clave de la num_hashtags en el documento de entidades.

Alternativamente, se podría resolver su problema inmediato al hacer un escaneo completo de tabla muy lento en todos los documentos para cada consulta de comprobar si el número hashtag que es uno mayor que el parámetro existe abusando MongoDB punto de notación .

gt_parameter = int(parameter) + 1  # question said greater than not greater or equal
key_im_looking_for = "entities.hashtags.{}".format(gt_parameter)  #create the namespace# 
# py2.7 => key_im_looking_for = "entities.hashtags.%s" %(gt_parameter) 
# in this example it would be "entities.hashtags.6"
cursor = collection.find({key_im_looking_for: {"$exists": True}})

La mejor respuesta (y la razón principal para usar una base de datos NoSQL en el primer lugar) es que debe modificar sus datos para adaptarse a su recuperación. Si es posible, se debe realizar una actualización in-situ añadiendo la clave num_hashtags.

Respondida el 27/11/2018 a las 18:14
fuente por usuario

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more