Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/python-3.x/18.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mongodb 使用pyMongo创建ISODate_Mongodb_Python 3.x_Pymongo_Isodate - Fatal编程技术网

Mongodb 使用pyMongo创建ISODate

Mongodb 使用pyMongo创建ISODate,mongodb,python-3.x,pymongo,isodate,Mongodb,Python 3.x,Pymongo,Isodate,我一直在试图找到一种使用pyMongo客户端创建ISODate对象的方法,但到目前为止没有任何成功 我使用客户机,这是目前Python3中唯一可用的严重问题,但问题似乎不是来自这个特定的pymongo版本 我想知道你们中是否有人从pymongo客户端找到了使用此MongoDB对象类型的解决方案。。。谢谢你的帮助 您只需要存储datetime.datetime的实例 从python shell插入: >>> c.test.test.insert({'date': datetime

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

我使用客户机,这是目前Python3中唯一可用的严重问题,但问题似乎不是来自这个特定的pymongo版本


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

您只需要存储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()

另外,我强烈建议您看看。注意,
tuple
这里被命名为tuple(相当于C中的struct)。还要注意的是,元组字段与C对应字段不同,即使名称相同(例如,tm_wday从星期一开始,而不是星期天)


这里utc代表世界时坐标。

实际上这也不起作用。当您尝试使用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 }) 
db[(colName)].find({“”:filterCondition})

会有用的

似乎不起作用,存储的数据是字符串。“时间戳”:“Wed Oct 05 2011 09:56:02 GMT+0200(CET)”,您使用的是什么版本的MongoDB?此外,ISODate不是BSON类型。这就是BSON Datetime在shell中的表示方式。在PyMongo中,它表示为datetime.datetime的实例。我的MongoDB<1.7,一旦升级,当我推送datetime.datetime实例时,它工作正常。非常简单。到处找这个。非常感谢。如果您需要转换除“现在”之外的日期,您可能还希望在获取utc值之前,将时区信息添加到datetime中。
fromtimestamp()
创建一个表示服务器本地时区时间的原始datetime对象:在大多数情况下,这不是您想要的。您应该使用
datetime.utcfromtimestamp(ts)
。欢迎使用堆栈溢出。您可以通过添加一些对代码所做操作的解释来更好地回答这个问题
db[(colName)].find({ "<colName>" : filterCondition })