这是我的情况: 我在网上出售交易卡。我将它们存储在卡盒中编号“部分”中,每个部分大约包含60-75张卡。大约有150个区域,如果没有一些软件,就很难找到人们订购的卡片。我创建了一个python脚本,该脚本接收已购买的卡的列表,访问我的Firebase(云Firestore)数据库,并返回每张卡的不同分区号。
这是我想要做的: 我想优化Firebase查询以最大程度地减少需要搜索的部分。我有很多重复的卡片,因此我相信像这样优化查询将为我节省大量的搜索卡片时间。我真的不知道如何开始。有人可以帮忙吗?
到目前为止,我已经创建了一个基本查询,该查询将分别获取每张卡并返回该部分。
这是我当前的查询:
db = firestore.Client()
collection = db.collection(CARD_COLLECTION_NAME)
docs = collection.where("name", EQUALS, card_name).where(IS_SOLD_PROPERTY, EQUALS, False).get()
for doc in docs:
db.collection(CARD_COLLECTION_NAME).document(doc.id).set({
IS_SOLD_PROPERTY: True
}, merge=True)
return doc._data["inventory_section"]
答案 0 :(得分:0)
就我而言,您的方法本身看起来不错。我能想到的唯一优化是将其限制为仅检索一张卡:
docs = collection
.where("name", EQUALS, card_name)
.where(IS_SOLD_PROPERTY, EQUALS, False).get()
.limit(1)