首页 > 解决方案 > 在MongoDB中查找所有与其他人没有关系的文档

问题描述

我有一组用户和一个帖子。我想查找一位用户尚未查看的所有帖子。我预计一位用户查看的帖子数量会随着时间的推移而增长,对于某些用户来说可能会达到数万或数十万,尽管大多数用户只有几百个。

我应该如何在 MongoDB 数据库中组织我的数据?
我应该将查看过的帖子数组保留在 User 集合中、Post 集合中、单独的集合中(每个视图一个文档)还是其他什么?

那么我应该如何查询数据库?

标签: mongodbnosql

解决方案


查询应该可以使用聚合管道构造。首先$lookup加入帖子以发布视图,然后$match删除$exists: false现有帖子。

这不会是一个具有大量数据的廉价查询。使其更快的一种策略是限制,例如,在加入之前允许帖子的时间,或将帖子的范围限定为论坛/标签等。


推荐阅读