【问题标题】:How to retrieve data from mongodb based on iso date time format using python如何使用python根据iso日期时间格式从mongodb检索数据
【发布时间】:2016-06-01 23:57:10
【问题描述】:

这是我的 mongodb 文档,

{ "_id" : ObjectId("56c198f53869650eb0e2bc7a"), "Date" : ISODate("2016-02-15T14:50:14Z"), "nocontract" : 299039, "turnover" : 14882.65, "instrument" : "NSEFUT"}
{ "_id" : ObjectId("56c19ffe3869650eb0e2bc7b"), "Date" : ISODate("2016-02-15T15:20:45Z"), "nocontract" : 334464, "turnover" : 16650.6, "instrument" : "NSEFUT"}
{ "_id" : ObjectId("56c1a7073869650eb0e2bc7c"), "Date" : ISODate("2016-02-15T15:30:15Z"), "nocontract" : 351399, "turnover" : 17487.73, "instrument" : "NSEFUT"}
{ "_id" : ObjectId("56c1ae103869650eb0e2bc7d"), "Date" : ISODate("2016-02-15T15:30:15Z"), "nocontract" : 351401, "turnover" : 17487.84, "instrument" : "NSEFUT"}
{ "_id" : ObjectId("56c1b5183869650eb0e2bc7e"), "Date" : ISODate("2016-02-15T15:30:15Z"), "nocontract" : 351401, "turnover" : 17487.84, "instrument" : "NSEFUT"}

我需要查询 iso 日期。当我提供 10:00 时,无论 10:00 时我的数据库中有什么记录,我都需要通过 python 检索。 这里我写了代码:

from datetime import datetime, timedelta
from pymongo import MongoClient

conn = MongoClient("mongodb://localhost:27017")
db = conn.index
x = datetime.today()
off = 10
n = off + 1
y = x.replace(day=x.day, hour=off, minute=0, second=0, microsecond=0)

date1 = datetime(2016, 1, 15, off, 0, 0)

for r in db.turnover.find({ 'Date': {'$gte': date1, '$lt': y}}):
    print r

但是当我尝试运行它时,它没有提供我想要的正确输出。任何人都可以帮助我解决这个问题,因为我是 python 和 mongodb 的新手。

【问题讨论】:

  • 请查看您提供的文件。他们真的有那么多奇怪的空白吗?此外,您的目标是什么也不清楚。也许你可以解决这个问题,例如通过根据您提供的样本数据解释预期结果...
  • 尝试更改以下部分:db = conn['yourDbName']col = db['collectionName']col .find(...)
  • 无关:datetime.today()返回本地时区的当前时间,使用datetime.utcnow()获取UTC时间(MongoDB使用)。

标签: python mongodb date datetime pymongo


【解决方案1】:

这是您问题的答案,

from pymongo import MongoClient
from datetime import datetime
#make the mongodb connection to your localhost
conn=MongoClient("mongodb://localhost:27017")
db=conn['index']#connection to your database
r=[]
for doc in db['turnover'].find():
      y=doc['time'].year
      m=doc['time'].month
      d=doc['time'].day
      c=db['turnover'].find({"time":datetime(y,m,d,10,0,0)}).count()
      if c>0:
          a=db['turnover'].find({"time":datetime(y,m,d,10,0,0)})
          for ele in a:
              r2.append(ele)
print r

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-11-13
    • 1970-01-01
    • 2020-06-27
    • 1970-01-01
    • 2013-12-22
    • 2023-04-01
    相关资源
    最近更新 更多