2013-04-02 12 views
5

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", 
... 
} 
+0

Il tuo documento 'dopo' non è valido JSON – JohnnyHK

+0

Grazie, aggiornato - si è verificato un errore durante la creazione del modello nell'editor – user2234151

+0

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

risposta

5

C'è una richiesta di qualcosa di simile in jira https://jira.mongodb.org/browse/SERVER-5947 - votare in su se si desidera avere questa funzione.

Nel frattempo, c'è una soluzione se si sa in anticipo quali saranno i possibili valori delle chiavi (vale a dire tutti i valori univoci di "categoria") e ho un codice di esempio su di esso on my blog.

+0

Nota che la capacità di trasporre le chiavi ai valori e viceversa è disponibile dalla versione 3.4.4 di MongoDB. –

Problemi correlati