在我目前的项目中,我使用的是两个数据库。
作为同步过程的一部分,我需要根据关系数据库中的数据定期检查MongoDB中的新条目。
让我们说,这是关于歌曲和艺术家的,MongoDB中的文档可能如下所示:
{_id:1,artists:["Simon","Garfunkel"],"name":"El Condor Pasa"}
同步过程的一部分是导入/更新关系数据库中已存在的艺术家的所有歌曲,这些歌曲目前约有1M名艺术家。
那么如何从MongoDB中检索所有1M名为艺术家的歌曲进行导入?
我的第一个想法(和尝试)是针对所有艺术家并查询每位艺术家的所有歌曲(当然,还有“艺术家”字段的索引)。但每1000名艺术家需要花费几分钟时间,这将使这个过程成为一个长跑者。
我的第二个想法是将所有现有的艺术家写成一个单独的mongoDB集合,并且有一个超级查询,它只检索存储在那里的艺术家的歌曲。但到目前为止,我还无法根据两个集合检索数据。 这是map / reduce的一个很好的用例吗?如果是,有人可以。给我一个如何实现这一目标的提示? (我不是NoSQL的新手,但在map / reduce方面却是一个新手。) 或者这个想法是不是很疯狂,我必须坚持一个运行了好几天的过程?
提前感谢任何提示。
答案 0 :(得分:0)
如果您经常需要检查更改,请为数据添加时间戳,并将该时间戳合并到查询中。例如,如果添加“created_ts”属性,则可以查找自上次批处理运行以来创建的记录。
以下是使mongo交互更有效的一些想法: