我正在尝试为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()
我能看到的唯一可行的解决方法是,如果我将所有用户事件放入同一集合中,删除了userID,然后对其进行查询,但我可能会达到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()
答案 0 :(得分:1)
我认为您误解了1MB限制的含义。 1MB的唯一documented limit适用于单个文档的最大大小。集合中可以容纳几乎无限数量的文档,并且只要创建了索引,就可以高效地查询所有文档。您的第二种方法应该没问题。