所以我有一个Channel
模型和一个Subscriber
模型。
频道的属性包含与已注册的订阅者相对应的ID数组。
我一直坐在这里用async
将我的头骨贴在墙上:
async
,为每个订阅者ID运行mongoDB查询以阻止用户配置文件并修改初始通道列表这似乎非常错误。 Subscriber
是否应将频道内的LIVE作为嵌入文档?如果是这种情况,那么当用户需要登录时,我是否必须在所有频道及其所有嵌入文档中进行搜索?
如果我想将它们分开保存怎么办 - 比如我想与用户,投标人以及我认为不属于嵌入式文档的其他实体一起做什么?
PS:我不想使用Mongoose。
有更简单的方法吗?
提前致谢。
答案 0 :(得分:0)
对于这种特殊情况,您可以进行$ in查询。您拥有给定频道的subscriberID数组,因此您可以对订阅者/用户集合进行$ in查询。
db.subscribers.find({userID:{$in: IDsArray}})
但总的来说,使用Mongo,您必须通过应用层手动执行这些连接。如果您不打算在其他地方起诉他们,您也可以将订阅者嵌入到频道文档中。 或者你可以切换到关系数据库,如Postgres。
希望这会有所帮助,它应该消除必须遍历所有订阅者ID并对每个订阅者ID进行查找。