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

732
Vistas
¿Por qué mongo no permite usar una etapa de $ faceta dentro de otra $ faceta?

Hay una etapa de agregación $facet en mongo desde 3.4: es genial. Permite procesar múltiples canalizaciones de agregación dentro de una sola etapa en el mismo conjunto de documentos de entrada.

Pero no permite usar una $faceta dentro de otra. Cita: "Cualquier otra etapa de agregación también se puede usar con $facet excepto: $facet, $out, $geoNear, $indexStats, $collStats"

¿Alguien entiende la razón?

Solo quiero usar $facet de esta manera:

 db.collection.aggregate([{ $facet: { 'first': [ $facet: { // here is the sub $facet 'subFirst1': [], 'subFirst2': [] } ], 'second': [ //... ] } }])

Esto debería producir un documento como:

 { first: { subFirst1: {...}, subFirst2: {...} }, second: {...} }

Si intento esto arroja el error:

 specified stage is not allowed to be used within a $facet stage: 0: { $facet: { subFirst1: [ ... ] } }"
over 4 years ago · Santiago Trujillo
1 Respuestas
Responde la pregunta

0

No se trata sólo de facetas. En general no está permitido crear subcampos en una etapa de agregación. Por ejemplo, falla el siguiente intento de crear un valor complejo.

 $addField: { ab: "foo" }

Y eso tiene bastante sentido, ya que un valor puede ser un tipo primitivo, un objeto complejo o una matriz. No sé si esa es una respuesta satisfactoria para usted, tal vez sea un pequeño consuelo que esto no solo cuente para las facetas, sino para todas las asignaciones en general.

También quiero decir que su intención es plausible. Especialmente en un sistema de base de datos, donde no se requiere un esquema y cada documento puede diferir de los demás, sería bueno tener esa característica. Si realmente manipula datos, puede hacerlo con set . Pero en sus resultados intermedios, no se le permite realizar esa acción. Uno puede percibir eso como un poco inconsistente.

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