我编写了以下函数,在使用pymongo包在mongo中运行搜索后,花一段时间将结果返回到主程序:
def searchMsgByDate (mycol,option):
dt = date.today()
if option == "today":
start = datetime.combine(dt, datetime.min.time())
end = datetime.combine(dt, datetime.max.time())
elif option == "yesterday":
start = datetime.combine(dt, datetime.min.time()) - timedelta(days=1)
end = datetime.combine(dt, datetime.max.time()) - timedelta(days=1)
elif option == "week":
start = datetime.combine( dt - timedelta(days=dt.weekday()), datetime.min.time())
end = datetime.combine(dt, datetime.max.time())
elif option == "month":
start = datetime.combine( dt - relativedelta(day=1) , datetime.min.time())
end = datetime.combine(dt, datetime.max.time())
elif option == "year":
start = datetime.combine( dt - relativedelta(month=1,day=1) , datetime.min.time())
end = datetime.combine(dt, datetime.max.time())
elif option == "forever":
start = datetime.combine( date(1970, 1, 1) , datetime.min.time())
end = datetime.combine(dt, datetime.max.time())
else:
print("Invalid option for searchMsgMain; exiting")
result = mycol.find({"msg_date": { "$gte": start, "$lt": end}});
record_count = 0
for entry in result:
record_count = record_count + 1
if record_count > 0:
print ("Records found =", record_count)
else:
print ("No records found")
return result
以下是调用函数的主程序:
out = searchMsgByDate(mycol)
for entry in out:
....
....
当我这样做的时候,我在主程序中什么也没有发生。我可以在函数中确认搜索结果并给出90多条记录
我想我在归还这类物品方面有问题,否则这是不可能的。我能够成功地返回简单的值。你知道吗
有什么想法我都很感激。你知道吗
我将结果写入一个数组,并将其作为函数返回返回。效果很好。你知道吗
1)您不必通过遍历游标元素自行执行计数。你可以打电话给db.collection.find数据库({}).count()方法。文档可以在here中找到
2)我不确定myCol是什么,但它应该是一个MongoClient.database\u名称对象。例如,请考虑以下代码段:
如您所见,我初始化了MongoClient,本例中的数据库名是KKNY。从这一点上说,我可以通过运行
self.database['event_names']
来访问这个数据库中的集合。你知道吗3)也请包括版本,你正在使用的Pymango从现在起,它将使我们的生活更轻松
相关问题 更多 >
编程相关推荐