Créer un ISODate avec pyMongo

j'ai essayé de trouver un moyen de créer un objet ISODate avec le client pyMongo, mais sans succès jusqu'à présent.

j'utilise http://pypi.python.org/pypi/pymongo3 client, qui est la seule sérieuse disponible en Python 3 pour l'instant, mais le problème ne semble pas venir de ce pymongo version.

je voudrais savoir si l'un d'entre vous a trouvé une solution pour utiliser ce type D'objet MongoDB d'un client pymongo... merci pour votre aide !

24
demandé sur Guillaume Lebourgeois 2011-10-04 20:26:27

4 réponses

Vous avez juste besoin de stocker une instance de datetime.datetime.

Insertion de l'interface python:

>>> c.test.test.insert({'date': datetime.datetime.utcnow()})
ObjectId('4e8b388367d5bd2de0000000')
>>> c.test.test.find_one()
{u'date': datetime.datetime(2011, 10, 4, 16, 46, 59, 786000), u'_id': ObjectId('4e8b388367d5bd2de0000000')}

Interrogation dans le shell mongo:

> db.test.findOne()
{
    "_id" : ObjectId("4e8b388367d5bd2de0000000"),
    "date" : ISODate("2011-10-04T16:46:59.786Z")
}
53
répondu Bernie Hackett 2011-10-04 16:51:26

pour ceux qui se demandent comment créer ISODate à partir de timestamp:

ts = time.time()
isodate = datetime.datetime.fromtimestamp(ts, None)

créer datetime objet sans fuseau horaire. Une fois insérée dans MongoDB, elle sera convertie en propre ISODate().

aussi, je recommande vivement de regarder Python TimeTransitionsImage. Notez que tuple ici nommé tuple (équivalent à struct en C). Et notez aussi que les champs tuple ne sont pas les mêmes que dans les contreparties C, même si les nom est le même (par exemple, tm_wday commence le lundi et non le dimanche).

13
répondu johndodo 2012-03-06 14:17:45
result = db.objects.insert_one(
   {"last_modified": datetime.datetime.utcnow()})

ici utc représente les coordonnées en temps universel.

0
répondu Tyler 2016-07-26 16:27:11

en Fait, cela ne fonctionne pas non plus. Lorsque vous essayez d'utiliser utcfromtimestamp ou fromtimestamp, le programme d'erreur disant qu'il a besoin d'un flotteur. Il suffit de parser la chaîne dans un objet date time et de l'utiliser directement dans le Mongodb. filtre

from_dt = datetime.strptime('2018-04-01','%Y-%m-%d')
#from_dts = datetime.utcfromtimestamp(from_dt)
to_dt = datetime.strptime('2018-04-30','%Y-%m-%d')
#to_dts = datetime.utcfromtimestamp(to_dt)
filterCondition = { 
    "LastLogin" : { "$lte" : to_dt},
    "LastLogin" : { "$gte" : from_dt}
}

Et

db[(colName)].find({ "<colName>" : filterCondition }) 

ça marcherait...

0
répondu Sandip Sinha 2018-06-27 06:57:35