IMO Sie müssen ISODate
nicht angeben, wenn Sie die Daten in der MongoDB speichern.
Python-Code (Fragment):
cur.execute("select name, created from tt_user;")
data = cur.fetchall()
for row in data:
print(row[0], row[1])
mdr = {
'user': row[0],
'created': row[1]
}
mongo_db.tt_user.insert_one(mdr)
print("Done.")
print("Check data in MongoDB");
for row in mongo_db.tt_user.find():
print(row)
und seine Ausgabe:
Load data from PostgreSQL into MondoDB...
('user1', datetime.datetime(2016, 6, 29, 13, 26, 28, 632436, tzinfo=psycopg2.tz.FixedOffsetTimezone(offset=180, name=None)))
('user2', datetime.datetime(2016, 6, 29, 13, 26, 28, 632739, tzinfo=psycopg2.tz.FixedOffsetTimezone(offset=180, name=None)))
('user3', datetime.datetime(2016, 6, 29, 13, 26, 28, 632751, tzinfo=psycopg2.tz.FixedOffsetTimezone(offset=180, name=None)))
('user4', datetime.datetime(2016, 6, 29, 13, 26, 28, 632757, tzinfo=psycopg2.tz.FixedOffsetTimezone(offset=180, name=None)))
('user5', datetime.datetime(2016, 6, 29, 13, 26, 28, 632762, tzinfo=psycopg2.tz.FixedOffsetTimezone(offset=180, name=None)))
Done.
Check data in MongoDB
{u'_id': ObjectId('5773a254afd34b43d76aa792'), u'user': u'user1', u'created': datetime.datetime(2016, 6, 29, 10, 26, 28, 632000)}
{u'_id': ObjectId('5773a255afd34b43d76aa793'), u'user': u'user2', u'created': datetime.datetime(2016, 6, 29, 10, 26, 28, 632000)}
{u'_id': ObjectId('5773a255afd34b43d76aa794'), u'user': u'user3', u'created': datetime.datetime(2016, 6, 29, 10, 26, 28, 632000)}
{u'_id': ObjectId('5773a255afd34b43d76aa795'), u'user': u'user4', u'created': datetime.datetime(2016, 6, 29, 10, 26, 28, 632000)}
{u'_id': ObjectId('5773a255afd34b43d76aa796'), u'user': u'user5', u'created': datetime.datetime(2016, 6, 29, 10, 26, 28, 632000)}
Und in der MongoDB Konsole:
> db.tt_user.find()
{ "_id" : ObjectId("5773a254afd34b43d76aa792"), "user" : "user1", "created" : ISODate("2016-06-29T10:26:28.632Z") }
{ "_id" : ObjectId("5773a255afd34b43d76aa793"), "user" : "user2", "created" : ISODate("2016-06-29T10:26:28.632Z") }
{ "_id" : ObjectId("5773a255afd34b43d76aa794"), "user" : "user3", "created" : ISODate("2016-06-29T10:26:28.632Z") }
{ "_id" : ObjectId("5773a255afd34b43d76aa795"), "user" : "user4", "created" : ISODate("2016-06-29T10:26:28.632Z") }
{ "_id" : ObjectId("5773a255afd34b43d76aa796"), "user" : "user5", "created" : ISODate("2016-06-29T10:26:28.632Z") }
>
So ist es das Verhalten der Client-Software, nicht das Speicherproblem. Speichern Sie einfach die Daten als Datetime.
PS: Danke, dass du mich gezwungen, MongoDB endlich :)
'wählen json_build_object ('name', name, 'erstellt', to_char (erstellt,‚ "isodate" (YYYY-MM-DD zu installieren "T" HH24: MI: SS.MS "Z") ")) vom Benutzer;' – Abelisto
Woher soll ich 'to_char' importieren? – Babel
' to_char' ist eine PostgreSQL-Funktion. In meinem obigen Beispiel erzeugt die Abfrage fertige JSONs. Sie können es wie folgt verwenden: 'query =" SELECT name, to_char (erstellt, '' ISODate \ "(JJJJ-MM-TT \" T \ "HH24: MI: SS.MS \" Z \ ") ') FROM user;" ' – Abelisto