web-dev-qa-db-ja.com

pyMongoでISODateを作成する

私はpyMongoクライアントでISODateオブジェクトを作成する方法を見つけようとしましたが、今のところ成功していません。

http://pypi.python.org/pypi/pymongo clientを使用します。これはPython 3で現在利用可能な唯一の深刻なクライアントですが、問題はありませんこの特定のpymongoバージョンに由来するものではないようです。

PymongoクライアントからこのMongoDBオブジェクトタイプを使用する解決策を見つけた人がいるかどうかを知りたい...助けてくれてありがとう!

29

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")
}
56
Bernie Hackett

タイムスタンプからISODateを作成する方法を知りたい場合:

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

これにより、タイムゾーンなしでdatetimeオブジェクトが作成されます。 MongoDBに挿入すると、適切なISODate()に変換されます。

また、 Python TimeTransitionsImage を確認することを強くお勧めします。ここでTupleという名前のTuple(Cのstructと同等)であることに注意してください。また、名前が同じであっても(たとえば、tm_wdayは日曜日ではなく月曜日から始まる)、TupleフィールドはCの対応するフィールドと同じではないことに注意してください。

14
johndodo

実際にはそれも機能しません。 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 }) 

うまくいく...

1
Sandip Sinha
result = db.objects.insert_one(
   {"last_modified": datetime.datetime.utcnow()})

ここで、utcは世界時座標の略です。

0
user6618005