Sto riscontrando che il framework di aggregazione mongodb è estremamente potente - sembra una buona opzione per appiattire un oggetto. Il mio schema utilizza una matrice di oggetti secondari in un array chiamato materiali. Il numero di materiali è variabile, ma un campo specifico (categoria) sarà univoco tra gli oggetti dell'array. Vorrei utilizzare il framework di aggregazione per appiattire la struttura e rinominare dinamicamente i campi in base al valore del campo della categoria. Non sono riuscito a trovare un modo semplice per farlo usando un $ project insieme a $ cond. C'è un modo?Quadro di aggregazione MongoDB - Rinomina campo dinamico
La ragione per la matrice di oggetti materiali è quello di permettere una semplice ricerca:
esempio {'materials.name': 'XYZ'} estrae qualsiasi documento in cui XYZ viene trovato.
E.g. di prima e dopo il documento
{
"_id" : ObjectId("123456"),
"materials" : [
{
"name" : "XYZ",
"type" : "Red",
...
"category" : "A"
},
{
"name" : "ZYX",
"type" : "Blue",
...
"category" : "B"
}]
}
a
{
"material_A_name" : "XYZ",
"material_A_type" : "Red",
...
"material_B_name" : "ZYX",
"material_B_type" : "Blue",
...
}
Il tuo documento 'dopo' non è valido JSON – JohnnyHK
Grazie, aggiornato - si è verificato un errore durante la creazione del modello nell'editor – user2234151
Ok, vedo cosa stai cercando di fare ora. Non c'è molto supporto per le chiavi generate dinamicamente nel framework agg, quindi non vedo come si possa fare con questo. Potrebbe essere necessario semplicemente postare il risultato in codice per farlo. – JohnnyHK