【发布时间】:2019-06-27 05:27:12
【问题描述】:
我有两个收藏。
用户
- user_id
- user_pw
- 地区
- 生日
- 类别
- 得分
- created_at
- updated_at
帖子
- post_id
- user_id
- 主题
- 身体
- 附件
- created_at
- updated_at
(User 和 Posts 集合都有 2000000 个文档)
在这种情况下,我必须过滤一些条件以使用 Posts 提取 User。
条件
- gte
- gte
- 地区 = '美国'
(每个条件的范围因用户而异)
所以我先提取过滤后的用户。
db.users.distinct("user_id",
{
"region": "US",
"score": {"$lte": `SOME_VALUE`, "$gte": `SOME_VALUE`},
"birdhay": {"$lte": `SOME_VALUE`, "$gte": `SOME_VALUE`}
}
)
并通过过滤的用户提取帖子。
db.posts.find({"user_id": {"$in": [FILTERED_USER_LIST]}}).order_by('post_id').limit(10)
但随着服务的发展,帖子和用户数据将会增加。
然后速度会变慢,也会出现内存问题 (目前,已经很慢了。上面的查询花费了差不多 2~3 秒)
我从第一个建模阶段就认为这是错误的。
问题
这是在 mongodb 中执行 join 的通用方式吗?
是否有任何好的建模参考必须通过大量集合执行?
还有其他性能改进吗?
任何建议,非常感谢。
【问题讨论】:
-
您是否有要搜索的索引字段?
-
@Sohan 是的。我已经触发了索引。
标签: mongodb