Seite 1 von 1

PyMongo

Verfasst: Dienstag 13. Oktober 2020, 10:41
von Freumel
Hallöchen,

ich arbeite gerade mit Pandas + MongoDB.
Erfolgreich verbunden ist es schonmal. Nun aber folgendes Problem:

Code: Alles auswählen

NumberInt(1593174121)
Ich bekomme die Typeninfo mit geschickt. Ist zwar geil, kann ich aber nicht wirklich mit arbeiten, weil python das alles als String interpretiert.
Hier mein Code:

Code: Alles auswählen

df = pd.DataFrame(list(client.db.collection.find()))
Ich kenne das Problem. Die Collection wird mit

Code: Alles auswählen

client.db.collection.find()
komplett gefetched. Aber auch hier bekomme ich die Typeninfo.
Im find habe ich auf Anhieb keinen Parameter gefunden, der den Typen verbirgt. Es gibt auch bson. Allerdings bietet das kein Modul für NumberInt an. Und selbst wenn: Der Typ einer "Spalte" ist nicht statisch. Mal ist da ein Int, mal ein Longint. Und eigentlich soll es ein Timestamp sein.

Die Datenbank ist nicht von mir. Ich soll "nur" damit arbeiten.

Hilfe wäre klasse.
Vielen Dank und LG

Re: PyMongo

Verfasst: Dienstag 13. Oktober 2020, 11:56
von __blackjack__
@Freumel: Hat das wirklich den Datentyp `str`? Das sieht fast so aus als wenn das da tatsächlich so als Zeichenkette in der Datenbank steht und das wäre dann ein Problem was jemand verursacht hat, der diese Daten so als Zeichenkette in die Datenbank geschrieben hat.

Re: PyMongo

Verfasst: Dienstag 13. Oktober 2020, 12:16
von Freumel
__blackjack__ hat geschrieben: Dienstag 13. Oktober 2020, 11:56 @Freumel: Hat das wirklich den Datentyp `str`? Das sieht fast so aus als wenn das da tatsächlich so als Zeichenkette in der Datenbank steht und das wäre dann ein Problem was jemand verursacht hat, der diese Daten so als Zeichenkette in die Datenbank geschrieben hat.
Uff - das ist es!
Danke!!

Es liegt ein DB Dump vor welches hochgeladen wurde. Dieser Dump besteht aus typisierten JSONs. Vermutlich ist da was schief gegangen.
Ich frage mal nach.

Vielen Dank für diesen Hinweis!

Re: PyMongo

Verfasst: Dienstag 13. Oktober 2020, 13:09
von __blackjack__
@Freumel: Was sind denn „typisierte JSONs“?

Das Problem bei JSON ist, dass es wie JavaScript keine ganzen Zahlen kennt. In der MongoDB-Shell gibt es deshalb diesen `NumberInt()`-Wrapper, um in JavaScript sagen zu können, dass ein Wert vom Typ Int(eger) ist. Python macht die Unterscheidung zwischen Ganzzahlen und Gleitkommazahlen ja, also gibt es dort auch nicht diese Wrapperklasse.