我有一个属于用户的帖子文档,用户有一个:approved
属性。如何使用Mongodb s.t查询我的帖子我只收到用户:approved => true
的位置?
我可以编写一个创建新数组的循环,但这似乎效率低下。
答案 0 :(得分:1)
MongoDB没有任何连接的概念。
您已在评论中声明Posts
和Users
是单独的集合,但您的查询明确涉及来自两个集合的数据,这意味着加入。
我可以编写一个创建新数组的循环,但这似乎效率低下。
SQL中的连接操作基本上是服务器上发生的循环。如果服务器端没有联接支持,则必须自行创建。
请注意,许多库(如Morphia)实际上都内置了一些此功能。你正在使用可能有一些支持的Mongoid,但你必须做一些狩猎。
答案 1 :(得分:0)
最简单的方法是查询已获批准的用户的唯一用户ID,然后查询海报的user_id位于该集合中的帖子文档。
正如Rubish所说,你可以通过在帖子文档中添加一个已批准的字段来去标准化。当用户的批准状态被切换(它们被批准或未批准)时,对帖子集合进行更新,对于所有该用户的帖子,您可以切换非规范化的批准字段。
使用非规范化方法可以让您执行一个查询而不是两个查询(简化最常见情况下的逻辑)并且维护起来并不是太难。
如果这有意义,请告诉我。