英文:
Get the document IDs from a collections firestore - Python
问题
我正在尝试从 evtid
文档中获取文档标识符,使用以下脚本:
import firebase_admin
from firebase_admin import credentials
from firebase_admin import firestore
# 使用服务帐户凭据。
cred = credentials.Certificate('mycredentials.json')
app = firebase_admin.initialize_app(cred)
db = firestore.client()
coll = db.collection("events").stream()
for doc in coll:
print(f'{doc.id}')
但没有任何内容显示。如果我为 evtid
和子集合 users
中的特定文档放入一个标识符 -
coll = db.collection("events").document("someid").collection("users").stream()
然后它会获取到文档(user)。我不知道 evtid
中文档的标识符,我首先需要找到它们。
我做错了什么?
结构是这样的屏幕截图:
英文:
I have a nested collection/document Firestore DB:
/events/evtid/users/user
Coll Docs Coll Docs
I am trying to get the document ids from evtid
documents using the below script:
import firebase_admin
from firebase_admin import credentials
from firebase_admin import firestore
# Use a service account.
cred = credentials.Certificate('mycredentials.json')
app = firebase_admin.initialize_app(cred)
db = firestore.client()
coll = db.collection("events").stream()
for doc in coll:
print(f'{doc.id}')
But nothing is presented. If I put an id for an especific document in evtid
and the subcollection users
->
coll = db.collection("events").document("someid").collection("users").stream()
then it gets the documents (user). I don't know the ids for the documents in evtid
and I first need to find them out.
What am I doing wrong?
答案1
得分: 2
根据我在您的Firestore数据库快照中所见,显然在events
集合中没有任何文档。
这是因为该集合中的文档ID是斜体的,通常意味着主文档已被删除,但其中的子集合仍然存在。因此,您可以从users
子集合中检索文档,但无法从events
集合中检索文档。
您能够看到已删除的文档ID是因为您的文档ID下只有users
子集合,这导致Firebase控制台显示events
集合的文档ID,以便您可以选择它们。
如果您想要在不干扰users
子集合的情况下用新数据填充已删除的数据,您可以在users
子集合上使用集合组查询,遍历这些结果,并使用类似以下方式编写父文档:
document.ref.parent.parent.set({ user: "Bob", age: 18 })
参考链接:
还请查看:
英文:
Based on what I can see in your Firestore database snapshot, apparently there are no documents in the events
collection.
The reason for this is that the document IDs in that collection are in italics, which usually means that the main documents have been deleted, but the subcollections within them still exist. As a result, you can retrieve documents from the users
subcollections, but not from the events
collection.
The fact that you are able to see the deleted documents ids is because You just have users
subcollection under document IDs, which causes the Firebase console to show the document IDs of the events
collection, so that you can select them.
If you want to backfill that deleted data with new one without disturbing the users
subcollection then you can use a collection group query on users
subcollection, loop through those results, and write the parent document with something like
document.ref.parent.parent.set({ user: "Bob", age: 18 })
Reference :
Also check :
通过集体智慧和协作来改善编程学习和解决问题的方式。致力于成为全球开发者共同参与的知识库,让每个人都能够通过互相帮助和分享经验来进步。
评论