typescript - 多个用户文档中相同重复字段的 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()
解决方案
我认为您误解了 1MB 的限制。唯一记录的 1MB 限制适用于单个文档的最大大小。您可以在集合中拥有几乎无限数量的文档,并且只要您创建了索引,就可以高效地查询它们。你的第二种方法应该没问题。
推荐阅读
- excel - 如何将价格乘以正确的货币价值
- python - 动态调整 QListView 项的图标大小
- node.js - 如何让 pm2 进程在停止/重新启动后观看?
- airflow - 使用参数调用函数并从 bashoperator 返回
- azure-cognitive-search - Azure 搜索自动完成模糊
- java - 在payara服务器域中,我应该如何配置不同的java版本
- android - 如何在android中将文本居中对齐?线性布局
- c# - 刚体圆周运动
- r - 如何在终端的脚本中显示 r 中的绘图
- c# - 无法正确绑定 Kendo Multi Select 以读取和写入多对多剃须刀模型