私はpyMongoクライアントでISODateオブジェクトを作成する方法を見つけようとしましたが、今のところ成功していません。
http://pypi.python.org/pypi/pymongo clientを使用します。これはPython 3で現在利用可能な唯一の深刻なクライアントですが、問題はありませんこの特定のpymongoバージョンに由来するものではないようです。
PymongoクライアントからこのMongoDBオブジェクトタイプを使用する解決策を見つけた人がいるかどうかを知りたい...助けてくれてありがとう!
Datetime.datetimeのインスタンスを保存するだけです。
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')}
Mongoシェルでのクエリ:
> db.test.findOne()
{
"_id" : ObjectId("4e8b388367d5bd2de0000000"),
"date" : ISODate("2011-10-04T16:46:59.786Z")
}
タイムスタンプからISODateを作成する方法を知りたい場合:
_ts = time.time()
isodate = datetime.datetime.fromtimestamp(ts, None)
_
これにより、タイムゾーンなしでdatetime
オブジェクトが作成されます。 MongoDBに挿入すると、適切なISODate()
に変換されます。
また、 Python TimeTransitionsImage を確認することを強くお勧めします。ここでTuple
はという名前のTuple(Cのstructと同等)であることに注意してください。また、名前が同じであっても(たとえば、tm_wdayは日曜日ではなく月曜日から始まる)、TupleフィールドはCの対応するフィールドと同じではないことに注意してください。
実際にはそれも機能しません。 utcfromtimestampまたはfromtimestampのいずれかを使用しようとすると、プログラムはfloatが必要であるというエラーを出します。文字列を日付時刻オブジェクトに解析し、Mongodbで直接使用します。フィルタ
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}
}
その後
db[(colName)].find({ "<colName>" : filterCondition })
うまくいく...
result = db.objects.insert_one(
{"last_modified": datetime.datetime.utcnow()})
ここで、utcは世界時座標の略です。