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 !
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")
}
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).
result = db.objects.insert_one(
{"last_modified": datetime.datetime.utcnow()})
ici utc représente les coordonnées en temps universel.
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...