当前位置:  开发笔记 > 编程语言 > 正文

MongoDB - 模拟连接或子查询

如何解决《MongoDB-模拟连接或子查询》经验,为你挑选了1个好方法。

我正在尝试找出在Mongo中构建数据的最佳方法,以模拟SQL中的简单连接或子查询.

假设我有经典的用户和帖子示例,其中一个集合中的用户和另一个集合中的帖子.我想查找所有城市是"伦敦"的用户的帖子.

我在这个问题中简化了一些事情,在我的真实场景中,将帖子作为数组存储在用户文档中将无法正常工作,因为每个用户不断插入1000个"帖子".

Mongos $ in运营商可以帮忙吗?$ $可以处理10,000,000个条目的数组吗?



1> Gates VP..:

老实说,如果你不能将"帖子"放到"用户"中,那么你有两种选择.

    对帖子内部的一些用户数据进行非规范化.然后,您只需搜索一个集合.

    做两个查询.(一个找用户另一个找帖子)

根据你的问题,你正在努力做#2.

从理论上讲,您可以构建一个用户ID(或引用)列表,然后查找属于该用户的所有帖子$in.但显然这种方法是有限的.

$ $可以处理10,000,000个条目的数组吗?

看,如果您计划在一组10,000,000个用户中 "查询"所有用户的帖子,那么您已经过了"查询"阶段.你自己说每个用户有1000多个帖子,所以你在谈论一个查询"有住在伦敦的帖子的用户"返回100M的记录.

100M记录不是查询,这是一个数据集!

如果您担心违反$in命令,那么我强烈建议您使用map/reduce.Mongo Map/Reduce将为您创建一个新的系列.然后,您可以根据需要修剪或汇总此数据集.

推荐阅读
oDavid_仔o_880
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有