gpt4 book ai didi

python - 我如何在 pymongo 中填充?

转载 作者:太空宇宙 更新时间:2023-11-03 14:33:11 25 4
gpt4 key购买 nike

def day():
message ="one day is remaining to take up your food"
nextday =datetime.now() + timedelta(days= 1)
nextdaydate= nextday.strftime('X%d/X%m/%Y').replace('X0','X').replace('X','')
bookingdata =db.booking.find({"$and":[{'date':nextdaydate},{'status':'confirmed'}]})
for data in bookingdata:
user=db.users.find_one({'_id' : data["user"]},{"devicetoken":1})
booking_id=data["_id"]
sendremindpush(user["devicetoken"],str(booking_id),str(message))

这里我正在做 cron 工作并想发送推送通知。所以我需要为此使用两个集合。

bookingdata =db.booking.find({"$and":[{'date':nextdaydate},{'status':'confirmed'}]})

在这一行中,我获取预订日期和

user=db.users.find_one({'_id' : data["user"]},{"devicetoken":1})

在 for 循环中的这一行中,我得到预订该预订的用户,然后下一步

booking_id=data["_id"]

在循环的这一行中,我从上面使用的预订集合中获取预订 ID。一切都在工作,但速度很慢。我不喜欢这个。我想减少这两个集合的查找步骤。我尝试了很多方法,但无法优化这两行。有什么解决办法可以减少这些吗?

最佳答案

您可以使用 nosql 方法并将用户数据与预订一起存储,并仅从预订数据中直接获取 token

def day():
message ="one day is remaining to take up your food"
nextday =datetime.now() + timedelta(days= 1)
nextdaydate= nextday.strftime('X%d/X%m/%Y').replace('X0','X').replace('X','')
bookingdata =db.booking.find({"$and":[{'date':nextdaydate},{'status':'confirmed'}]})
for data in bookingdate:
user = data['user']
booking_id=data["_id"]
sendremindpush(user["devicetoken"],str(booking_id),str(message))

或者您可以避免多个 find_one 并只执行一个查找查询,如下所示,避免多次数据库调用

def day():
message ="one day is remaining to take up your food"
nextday =datetime.now() + timedelta(days= 1)
nextdaydate= nextday.strftime('X%d/X%m/%Y').replace('X0','X').replace('X','')
bookingdata = []
users = []
for booking in db.booking.find({"$and":[{'date':nextdaydate},{'status':'confirmed'}]}):
bookingdata.append(booking)
users.append(booking['user'])
user_device_token_mappings = dict([(u['_id'),u['devicetoken']) for u in db.users.find({'_id' : {'$in':users}},{"devicetoken":1})])

for data in bookingdate:
booking_id=data["_id"]
device_token = user_device_token_mappings[data["user"]]
sendremindpush(device_token,str(booking_id),str(message))

关于python - 我如何在 pymongo 中填充?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47139067/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com