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

278
Vistas
MongoDB extrae valores de matriz de subdocumentos de múltiples documentos

Estoy usando Bucket Pattern para dividir una serie temporal de actualizaciones de mercado y evitar exceder el tamaño del documento (los gastos generales de transferencia no son una preocupación). Cada documento tiene 30,000 actualizaciones y necesito devolver esas actualizaciones de todos los documentos que coincidan con 'marketId' en una matriz (con suerte ordenados).

Datos:

 { _id: 60617172eca858909eace71f, marketId: '1.278363651', eventId: 5697224, marketType: 'OVER_UNDER_15', size: 30000, updates: [ { t: 1616998770482.0, p: 36.49 }, { t: 1616998770482, p: 87.77 }, // ... 29998 more ] },

Resultado deseado:

 [ { t: 1616998770482, p: 36.49 }, { t: 1616998770482, p: 16.59 }, { t: 1616998770482, p: 40.38 }, ... // sorted by t }

Este es mi intento más cercano con una agregación:

 const result = await db.collection('markets').aggregate( { $match: { marketId: marketId } }, { $project: { _id: 0, updates: 1 } }, { $unwind: "$updates" }, { $unwind: "$updates" }, ).toArray();

Producción:

 [ { updates: { t: 1616998770482, p: 36.49 } }, { updates: { t: 1616998770482, p: 16.59 } }, { updates: { t: 1616998770482, p: 40.38 } }, ... // actually gives me all of them }

¿Cómo puedo eliminar las "actualizaciones" y llegar al objeto real?

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

0

Demostración: https://mongoplayground.net/p/Dw7NAn9EoEd

Usar $replaceRoot

 db.collection.aggregate([ { $match: { marketId: marketId } }, { $project: { _id: 0, updates: 1 }}, { $unwind: "$updates" }, { $replaceRoot: { newRoot: "$updates" } } ])
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