Seitenanfang

MongoDB mit Hindernissen

Dieser Post wurde aus meiner alten WordPress-Installation importiert. Sollte es Darstellungsprobleme, falsche Links oder fehlende Bilder geben, bitte einfach hier einen Kommentar hinterlassen. Danke.


Gerade habe ich MongoDB noch hoch gelobt, da kostet mich eine Schlampigkeit im MongoDB-Treibermodul für Perl einen halben Arbeitstag.Eigentlich war die Aufgabe ganz einfach: Alle Dokumente finden, die einen Unix-Timestamp größer als "x" haben.In MongoDB/Perl bedeutet das {date => { '$gt' => 13206775 } },  eigentlich ganz einfach. Wenn man allerdings den Zeitstempel als HTTP-Parameter bekommt und das MongoDB-Modul die Entscheidung über den Datentyp C-Source überlässt, anstatt diese - wie üblich - in Perl zu treffen. So wurde aus meinem Timestamp ein Text und der verträgt sich nunmal nicht sonderlich gut mit einem nummerischen Vergleich.Fazit: $var + 0 und schon ist eine Zahl auch für das MongoDB-Modul eine Zahl.Wer denkt schon an das Naheliegende... Der Bug ist im RT natürlich beschrieben, leider sieht die aktuelle Maintainerin keinen Bedarf für einen Fix. Schade eigentlich.
 

3 Kommentare. Schreib was dazu

  1. Sebastian

    So schnell ist die Welt... nachdem der RT Bug seit April unverändert da lag, hat sich gestern nach meinem Eintrag noch viel getan: Kristina, MongoDB-Modul-Maintainerin, möchte den Bug jetzt doch fixen. Danke!!!

  2. sonyon

    Also richtig spektakulär wäre es wenn sie endlich mal ein Datetime Feld einbauen.^^

  3. Sebastian

    Den haben sie: http://www.mongodb.org/display/DOCS/Java+Types#JavaTypes-Dates%2FTimes

    Allerdings sehe ich keinen Sinn, die von SQL angefangene endlose Konvertiererei zwischen Unixtimestamp und SQL-DateTime's fortzusetzen, deswegen unixtimes in der Datenbank.

Schreib was dazu

Die folgenden HTML-Tags sind erlaubt:<a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>