如何优化搜索卡片的Firebase查询?

时间:2019-04-12 18:47:32

标签: python firebase google-cloud-firestore

这是我的情况: 我在网上出售交易卡。我将它们存储在卡盒中编号“部分”中,每个部分大约包含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"]

1 个答案:

答案 0 :(得分:0)

就我而言,您的方法本身看起来不错。我能想到的唯一优化是将其限制为仅检索一张卡:

docs = collection
        .where("name", EQUALS, card_name)
        .where(IS_SOLD_PROPERTY, EQUALS, False).get()
        .limit(1)