Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

733
Views
¿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 answers
Answer question

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 Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!