Efter en masse fejlfinding, fiflen og test fandt jeg endelig ud af det. Mit problem, viste det sig, var ikke skrivningen til mongo, det var i læsningen tilbage fra mongo, når den var blevet skrevet.
Sitecore-dokumentationen ser (som sædvanligt) ud til fuldstændig at gå glip af en ret grundlæggende del af arbejdet med dette. Omkring en tredjedel af langt nede i de dokumenter, der står :
Ok, det er meget misvisende. Hvad denne EnsureAttribute
ser ud til at gøre er at indlæse dataene for facetten i den aktuelle klasse fra mongo. Hvis du ikke gør dette for hver ejendom i din facet, så sætter den ikke værdien fra mongoDb! Dette var min fejl, jeg havde ikke "sikret" hver ejendom i klassen.
Så det, der skete, er
- Jeg lægger mine data ind i facetten
- facetdataene forbliver i sessionen, og jeg kan se, få adgang til dem, ændre dem osv.
- Dataene bliver til sidst tømt til mongo (xDb hvis du skal)
- brugeren vender tilbage, systemet genkender dem korrekt (der er ingen grund til at identificere brugeren ,
SC_ANALYTICS_GLOBAL_COOKIE
gør dette for dig) - Men den indlæser ikke dataene (ud af mongo og tilbage i sessionen), medmindre du "sikrer" det.
Så EnsureAttribute
"erklærer ikke en værditype" (dette er bare helt forkert efter min mening) det indlæser dataene fra mongodb og ind i den aktuelle Session
.