gpt4 book ai didi

python - Firestore,Python,更新复合查询检索的文档中的字段

转载 作者:行者123 更新时间:2023-12-03 08:04:07 37 4
gpt4 key购买 nike

我需要更新 Firestore 数据库中的一堆文档。我通过使用查询成功检索了它们,但现在我应该更新每个字段中的相同字段,但我遇到了麻烦。这是我尝试过的:

def main():
db_credentials = "some_local_file.json"
cred = credentials.Certificate(f"{db_credentials}")
firebase_admin.initialize_app(cred)
db = firestore.client()

user_id = "user_ID_000"

doc_ref_generator = db.collection(u'CollectionName').where(u'UID', u'==', user_id).where(u'Status', u'==', "Active").stream()

for doc_ref in doc_ref_generator:
doc_ref.update({u"Status": u"non_active"})

if __name__ == "__main__":
main()

我收到错误:

File "/Users/user_name/projects/xxx/firestore_check.py", line 17, in main
doc_ref.update({u"Status": u"non_active"})
AttributeError: 'DocumentSnapshot' object has no attribute 'update'

最佳答案

您还必须在迭代 stream() 时指定集合引用并获取文档 ID。请参阅下面的示例代码:

# Collection Reference
col_ref = db.collection(u'CollectionName')
doc_ref_generator = col_ref.where(u'UID', u'==', user_id).where(u'Status', u'==', "Active").stream()

for doc_ref in doc_ref_generator:
# Document Reference
doc = col_ref.document(doc_ref.id)
doc.update({u"Status": u"non-active"})

或者您可以使用 reference 属性从 DocumentSnapshot 获取文档引用:

for doc_ref in doc_ref_generator:
# doc = col_ref.document(doc_ref.id)
doc_ref.reference.update({u"Status": u"non-active"})

您可以查看此文档以获取更多信息。

关于python - Firestore,Python,更新复合查询检索的文档中的字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/72991086/

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