如何在Python中正确查询Firestore数据库

如何在Python中正确查询Firestore数据库,python,google-cloud-firestore,Python,Google Cloud Firestore,我尝试了多种方法在firestore中使用.where(),最后我只是通过了.where()并使用了.get(),然后使用if/else语句来检查数据。使用Javascript相当简单。Python文档不容易理解 doc_reffer = db.collection(u'test') emails = doc_reffer.where(u'adminEmail', u'==', 'x@x.com') \ .get() if(emails == True): return "is

我尝试了多种方法在firestore中使用.where(),最后我只是通过了.where()并使用了.get(),然后使用if/else语句来检查数据。使用Javascript相当简单。Python文档不容易理解

doc_reffer = db.collection(u'test')
emails = doc_reffer.where(u'adminEmail', u'==', 'x@x.com') \
    .get()
if(emails == True):
    return "is true"
else:
    return "false"
这两个都不能正常工作,我得到一个响应,但无法检查该对象上的任何内容。可以在.where()上使用哪些方法?如何正确使用它

doc_reffer = db.collection(u'test')
emails = doc_reffer.where(u'adminEmail', u'==', 'x@x.com')
    return str(emails)
使用
.stream()
方法:

请注意,
stream()
返回一个迭代器,在开始遍历结果之前不会获取文档

您可以获取所有文档,并将它们放入一个dict中,如下所示:

doc_reffer = db.collection(u'test').where(u'adminEmail', u'==', 'x@x.com')
emails = [snapshot for snapshot in doc_reffer.stream()]
使用
.stream()
方法:

请注意,
stream()
返回一个迭代器,在开始遍历结果之前不会获取文档

您可以获取所有文档,并将它们放入一个dict中,如下所示:

doc_reffer = db.collection(u'test').where(u'adminEmail', u'==', 'x@x.com')
emails = [snapshot for snapshot in doc_reffer.stream()]

使用Juan Laras answer,我能够成功地获取该管理电子邮件所在集合中的所有文档。这就是我想要实现的。我几乎找不到这方面的文档(简单文档)

 doc_reffer = db.collection(u'test')
    responseUserEmail = 'x@x.com'
    query = doc_reffer.where(u'adminEmail', u'==', responseUserEmail)
    docs = [snapshot.id for snapshot in query.stream()]
    if responseUserEmail in docs:
        return f'found {responseUserEmail}'
    else:
        return f'did not find {responseUserEmail}'

使用Juan Laras answer,我能够成功地获取该管理电子邮件所在集合中的所有文档。这就是我想要实现的。我几乎找不到这方面的文档(简单文档)

 doc_reffer = db.collection(u'test')
    responseUserEmail = 'x@x.com'
    query = doc_reffer.where(u'adminEmail', u'==', responseUserEmail)
    docs = [snapshot.id for snapshot in query.stream()]
    if responseUserEmail in docs:
        return f'found {responseUserEmail}'
    else:
        return f'did not find {responseUserEmail}'

其他答案似乎是正确的。您提到,使用python客户端库很难理解这些文档。这是我试图解决的问题之一。使用flask boiler,您将能够查询如下对象:

emails = [x for x in Test.where(admin_email='x@x.com')]
for email in emails:
    print(u'{} => {}'.format(email.doc_id, email.to_dict()))

谢谢

其他答案似乎是正确的。您提到,使用python客户端库很难理解这些文档。这是我试图解决的问题之一。使用flask boiler,您将能够查询如下对象:

emails = [x for x in Test.where(admin_email='x@x.com')]
for email in emails:
    print(u'{} => {}'.format(email.doc_id, email.to_dict()))

谢谢

你读过这个文件吗?我读过,但它用烧瓶玩得不好。你读过这个文件吗?我读过,但它用烧瓶玩得不好。谢谢。有没有一种方法可以将文档的名称或id放在哪里?那么搜索文档名?我知道我可以使用doc.id。所以,where()document name=='name'谢谢。有没有一种方法可以将文档的名称或id放在哪里?那么搜索文档名?我知道我可以使用doc.id。So.where()文档名=='name'