首页 > 解决方案 > 多个用户文档中相同重复字段的 Firebase 索引

问题描述

我正在尝试为 firestore 中的用户构建预订日历,但不想为每个用户事件“_timeStamp”字段和“_service”创建索引。

路径 /_sharedData/_calendars/userID/eventID

var cal = db.collection("sharedData").doc("calendars").collection(userID);

var query = cal.where("_service", "==", _myService)
.where("_timeStamp", ">", _dStart)
.where("_timeStamp", "<", _dEnd)
.limit(200)
.get()

我认为这是可行的唯一可行的方法是,如果我将所有用户事件放入同一个集合中,删除用户 ID,然后查询它,但我可能会达到 1mb 的集合限制。

路径 /_calendars/eventID

var cal = db.collection("calendars");

var query = cal.where("_userID", "==", _myUser)
.where("_service", "==", _myService)
.where("_timeStamp", ">", _dStart)
.where("_timeStamp", "<", _dEnd)
.limit(200)
.get()

标签: typescriptgoogle-cloud-firestore

解决方案


我认为您误解了 1MB 的限制。唯一记录的 1MB 限制适用于单个文档的最大大小。您可以在集合中拥有几乎无限数量的文档,并且只要您创建了索引,就可以高效地查询它们。你的第二种方法应该没问题。


推荐阅读