这是我的情况:我在网上卖交易卡。我将它们存储在卡片盒中编号的“部分”中,每个部分包含大约60-75张卡片。有大约150个部分,没有一些软件就很难找到人们订购的卡片。我创建了一个python脚本,它接收已购买的卡的列表,访问我的Firebase (Cloud 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"]发布于 2019-04-13 04:15:04
就其本身而言,您的方法在我看来很好。我能想到的唯一优化是将其限制为仅检索一张卡:
docs = collection
.where("name", EQUALS, card_name)
.where(IS_SOLD_PROPERTY, EQUALS, False).get()
.limit(1)https://stackoverflow.com/questions/55657850
复制相似问题