MongoDB Aggregate Framework - Gruppe nach Jahr

8

Ich habe versucht, die Aggregatfunktion zu verwenden, um Datumsfelder nach Jahr zu gruppieren:

%Vor%

Einige meiner Daten fallen jedoch vor 1970 und als Windows-Benutzer bekomme ich einen ekligen Fehler über gmtime:

%Vor%

Ich weiß, dass die offensichtliche Antwort jetzt für mich ist, eine virtuelle Maschine laufen zu lassen oder etwas, aber ich war nur neugierig, ob es irgendwelche Workarounds für Windows gab (Windows 7 in meinem Fall). Wenn der Leistungseinbruch nicht erreicht wird, wird das Datum als verschachteltes Objekt gespeichert, z. B .:

%Vor%

Ich bin mir nicht sicher, wie hektisch das mit Indizes usw. wäre.

Irgendein Rat geschätzt!

    
backdesk 16.12.2012, 17:24
quelle

1 Antwort

0

Einige Windows-Versionen funktionieren bekanntermaßen. Verwenden Sie zufällig ein 32-Bit-Betriebssystem? Der entsprechende Code ist hier und hängt von der gmtime_s() Implementierung ab.

Wenn diese Auflistung nur für Aggregationsabfragen verwendet wird, können Sie sicher mit dem Speichern von Datumskomponenten in einem Objekt umgehen. Ich würde vorschlagen, die Feldnamen abzukürzen (z.B. y , m , d ), um Speicherplatz zu sparen, da die Feldfolgen in jedem gespeicherten Dokument vorhanden sind. Der Nachteil hierbei ist, dass keiner der Aggregationsdatumsoperatoren verwendet werden kann. Möglicherweise möchten Sie den Zeitstempel als eine Ganzzahl mit Vorzeichen speichern (z. B. ts ), damit Sie bei Bedarf problemlos Bereichsabfragen durchführen können.

    
jmikola 19.12.2012, 21:58
quelle

Tags und Links