firestore 不支持对单个文档内的数组字段直接分页,因为读取文档时会加载全部内容;真正的分页应作用于集合查询,且单文档大小上限为 1 mib,无法存储“百万级”数据。
在 Firestore 中,文档 
# 示例:内存内模拟分页(不推荐用于大数据量)
doc = collection.document(str(document_id)).get()
if doc.exists:
data = doc.to_dict()
posts = data.get("posts", [])
page_size = 10
start_idx = 0 # 可替换为动态 offset
current_page = posts[start_idx : start_idx + page_size]⚠️ 关键限制必须牢记:
✅ 正确的架构设计建议:
# 推荐:基于子集合的服务端分页
posts_ref = db.collection("users").document(user_id).collection("posts")
query = posts_ref.order_by("created_at", direction=firestore.Query.DESCENDING).limit(10)
first_page = query.get()
# 获取最后一条用于下一页
last_doc = list(first_page)[-1] if first_page else None
if last_doc:
next_query = posts_ref.order_by("created_at", direction=firestore.Query.DESCENDING)\
.start_after(last_doc).limit(10)? 总结:不要把高基数关系型数据(如用户海量帖子)塞进单文档数组。利用 Firestore 的集合/子集合模型,配合 limit() 和游标分页,才能获得可扩展、低延迟、符合配额约束的生产级实现。