簡體   English   中英

使用 pyMongo 創建 ISODate

[英]Create an ISODate with pyMongo

我一直在嘗試尋找一種方法來使用 pyMongo 客戶端創建 ISODate object,但到目前為止沒有任何成功。

我使用http://pypi.python.org/pypi/pymongo3客戶端,這是目前 Python 3 中唯一可用的正經客戶端,但問題似乎並非來自此特定的 pymongo 版本。

我想知道你們中是否有人找到了從 pymongo 客戶端使用此 MongoDB object 類型的解決方案...感謝您的幫助!

您只需要存儲一個datetime.datetime實例。

從python shell插入:

>>> 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 shell中查詢:

> 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命名為元組 (相當於C中的struct)。 還要注意,即使命名相同,元組字段也與C對應的字段不同(例如,tm_wday以星期一而不是星期日開始)。

實際上,這也不起作用。 當您嘗試使用utcfromtimestamp或fromtimestamp時,程序會錯誤地指出需要浮點數。 只需將字符串解析為日期時間對象,然后直接在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在這里代表世界時間坐標。

要創建具有特定日期的文檔,例如 03/10/1999,請運行以下命令:

from datetime import datetime
from pymongo import MongoClient

db = MongoClient().db_name

date = datetime(1999, 03, 10)
db.collection.insert_one({'date': date})

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM