Wie die Abfrage mit der Zeitzone in Mongodb
Ich versuche die Portierung meiner Anwendung Datenbank von Mysql auf Mongodb, aber ich traf ein problem mit datetime Abfragen.
In Mysql, wenn es einen datetime-oder timestamp-Spalte haben, können Sie bestimmte Zeitzone für jede Anforderung mit dem Befehl:
SET time_zone = timezone;
//do queries here
Gibt es irgendeine Art von ähnlichen Lösungen für diese Art von Anforderungen?
Ich kenne Anwendungen, die den job tun können, nachdem das abrufen von Daten aus mongodb, aber was über die Verwendung von aggregation mit $Stunde, $Monat und $Tag-Betreiber?
- ich glaube nicht, dass es ist... das ist, warum Sie sollten immer speichern Datumsangaben als UTC. lassen Sie die Anwendung herausfinden, die Zeitzone Zeug!
- in Anbetracht Funktionen in mysql wie: hour(), Tag(), Monat() für Termine, die Anwendung zu tun haben, eine Menge Arbeit zu vollbringen, die all diese Dinge
- Wenn Sie die Zeitzone manuell über den timezone-notation auf die ISO-konforme Datum-Objekt, wie gezeigt, in dieser Frage: stackoverflow.com/questions/11486779/... mongodb in der Lage sein könnte zu beheben, die Zeitzone richtig server-Seite, allerdings würde ich empfehlen, immer die Sachen in UTC Lösung zu UTC-Zeitstempel und dann die integer-Repräsentation der Zeitzone ontop und dann der Lösung die Anzeige wieder auf client-Seite
- Dies ist nur eine Lösung für einfachen Methoden. Aber wenn Sie wollen, zu tun, Aggregationen mit datetime-Operationen wie $Stunde, $dayOfWeek. Sie konnte nur die Zeitzone Arbeit auf der server-Seite.
- Ich bin damit einverstanden, dies ist ein problem, ich bin der Begegnung zu.
Du musst angemeldet sein, um einen Kommentar abzugeben.
MongoDB speichert alle Datums-und Zeitangaben in UTC. Dies ermöglicht es der Zeitzonen-Unterstützung und übersetzung zu tun application-Seite, anstatt der server-Seite.
Der beste Weg zum speichern von Daten und Zeiten erfolgt über die Javascript - Datum Objekt. Dies ermöglicht es Ihnen, konvertieren von Daten zu und von Unix-Zeitstempel, mit getTime() und Date(Millisekunden).
Es sollte angemerkt werden,, dass Javascript speichert die Zeit in Millisekunden seit der UNIX-Epoche, während die standard - UNIX-timestamp ist in Sekunden seit Epoch.
hatte ein ähnliches Problem hier diskutiert,
https://groups.google.com/forum/?fromgroups=#!Thema/mongodb-Nutzer/PodDGnWM09Q
auch, diese website ist auch nützlich für die Zukunft refrencing 🙂
http://www.querymongo.com/