Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

116
Vistas
Cálculo de Pymongo dentro de la base de datos

Mi meta:

calcular:

"abrir" * 1.1

antes de que pymongo emita los datos, porque creo que sería más rápido

Los datos tienen el siguiente aspecto:

 { "_id": "000016.XSHE_2020-01-02-09-32", "order_book_id": "000016.XSHE", "datetime": { "$date": "2020-01-02T09:32:00.000Z" }, "num_trades": 0, "low": 4.3131, "close": 4.3228, "high": 4.3326, "total_turnover": 2826041, "volume": 639124, "open": 4.3228 } { "_id": "000016.XSHE_2020-01-02-09-33", "order_book_id": "000016.XSHE", "datetime": { "$date": "2020-01-02T09:33:00.000Z" }, "num_trades": 0, "low": 4.3131, "close": 4.3228, "high": 4.3326, "total_turnover": 1087488, "volume": 246300, "open": 4.3131 }....

Estoy probando los siguientes códigos pero ninguno funciona:

 tdcursor = MinutesDB.find({"order_book_id": "000016.XSHE", "datetime": {"$gte": recent11TradingDays[-1]}, "uplimit":{"$multiply":{"open": 1.1}}}, {"_id": 0, "order_book_id":1, "datetime": 1, "open": 1, "close": 1}) datadf = pd.DataFrame(tdcursor)

o

 multiply = MinutesDB.aggregate([ {"$group": {"order_book_id": "000016.XSHE", "uplimit": {"$multiply": ["$open", 1.1]} } } ]) datadf = pd.DataFrame(multiply)

el código anterior da un error como el siguiente:

 pymongo.errors.OperationFailure: The $in accumulator is a unary operator, full error: {'ok': 0.0, 'errmsg': 'The $in accumulator is a unary operator', 'code': 40237, 'codeName': 'Location40237'}

¡Gracias por tu ayuda!

over 4 years ago · Santiago Trujillo
1 Respuestas
Responde la pregunta

0

aquí hay una solución con un agregado

 db.collection.aggregate([ { "$match": { "order_book_id": "000016.XSHE", } }, { "$project": { "uplimit": { "$multiply": [ "$open", 1.1 ] } } } ])

Dado que desea consultar solo los documentos que coinciden: order_book_id": "000016.XSHE , necesitará una etapa $match en el agregado

Y luego un $project para usar $multiply

Pruébalo aquí

over 4 years ago · Santiago Trujillo Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda