首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用pyMongo创建ISODate

使用pyMongo创建ISODate
EN

Stack Overflow用户
提问于 2011-10-05 00:26:28
回答 5查看 70K关注 0票数 37

我一直在尝试寻找一种使用pyMongo客户端创建ISODate对象的方法,但到目前为止还没有成功。

我使用的是http://pypi.python.org/pypi/pymongo3客户端,这是目前Python3中唯一可用的严重客户端,但问题似乎不是来自这个特定的pymongo版本。

我想知道你们中是否有人找到了从pymongo客户端使用此MongoDB对象类型的解决方案……感谢您的帮助!

EN

回答 5

Stack Overflow用户

回答已采纳

发布于 2011-10-05 00:51:27

您只需要存储datetime.datetime的一个实例。

从python shell插入:

代码语言:javascript
复制
>>> 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中查询:

代码语言:javascript
复制
> db.test.findOne()
{
    "_id" : ObjectId("4e8b388367d5bd2de0000000"),
    "date" : ISODate("2011-10-04T16:46:59.786Z")
}
票数 68
EN

Stack Overflow用户

发布于 2012-03-06 22:17:46

对于那些想知道如何从时间戳创建ISODate的人:

代码语言:javascript
复制
ts = time.time()
isodate = datetime.datetime.fromtimestamp(ts, None)

这将创建不带时区的datetime对象。当插入到MongoDB中时,它将被转换为正确的ISODate()

另外,我强烈推荐使用Python TimeTransitionsImage。注意,这里的结构被命名为元组(相当于C中的tuple )。还要注意,元组字段与C中的对应字段不同,即使命名相同(例如,tm_wday以星期一而不是星期日开始)。

票数 14
EN

Stack Overflow用户

发布于 2018-06-27 05:51:14

实际上,这也不起作用。当你尝试使用utcfromtimestamp或fromtimestamp时,程序会错误地指出它需要一个浮点数。只需将字符串解析为date time对象并直接在Mongodb中使用即可。过滤器

代码语言:javascript
复制
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}
}

然后

代码语言:javascript
复制
db[(colName)].find({ "<colName>" : filterCondition }) 

将会起作用。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/7651064

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档