Dopo un sacco di debugging, giocherellare e testare, finalmente l'ho capito. Il mio problema, si è scoperto, non era la scrittura su mongo, ma la lettura di mongo una volta che era stato scritto.
La documentazione del sitecore sembra (come al solito) perdere completamente una parte piuttosto fondamentale del funzionamento di questo. Circa un terzo dei in fondo ai documenti che afferma :
Ok, questo è molto fuorviante. Cosa questo EnsureAttribute
sembra caricare i dati per il facet nella classe corrente da mongo. Se non lo fai per ogni proprietà nella tua sfaccettatura quindi non imposta il valore da mongoDb! Questo è stato un mio errore, non avevo "assicurato" tutte le proprietà della classe.
Quindi quello che stava succedendo è,
- Ho inserito i miei dati nel facet
- i dati dei facet persistono nella Session e posso vederli, accedervi, modificarli, ecc.
- I dati vengono infine scaricati su mongo (xDb se necessario)
- l'utente ritorna, il sistema lo riconosce correttamente (non è necessario identificare l'utente , il
SC_ANALYTICS_GLOBAL_COOKIE
lo fa per te) - Ma non carica i dati (da mongo e torna nella sessione) a meno che non li "assicuri".
Quindi EnsureAttribute
non "dichiara un tipo di valore" (questo è completamente sbagliato secondo me) carica i dati da mongodb e nella Session
corrente .