与MongoDB和MySQL的混合查询

时间:2014-09-07 16:13:28

标签: php mysql mongodb database

我在mysql数据库中有一个联系人表,在mongodb中有一个事件/动作日志数据库。操作日志中的项目属于联系人。

联系人表

id | name | email
 1 | Joe  | joe@email.com

活动集合

{_id:..., contact_id: 1, type:"purchase", data:{}}
{_id:..., contact_id: 1, type:"signup", data:{}}
{_id:..., contact_id: 1, type:"click", data:{}}

查询1 - 购买"

的联系人

这很简单,因为我只需要运行一个mongo .find({type:"purchase"}),遍历联系ID并查询mysql数据库。

查询2 - 未购买的联系人

这就是我被困的地方,只有我想到的选项是.find({type:"purchase"}),抓住联系ID并将它们放在NOT IN()内,但它不是从长远来看,运行像这样的查询的可扩展方法是什么?

查询3 - 联系人注册谁的电子邮件以" joe"

开头

同样的问题再次出现,首先我需要运行mysql部分,并获取联系人的电子邮件以" joe"然后在mongo中使用那些id,或者反复使用那些数据较少的数据(联系ID)

mongo中的所有内容

我不确定将联系人表格移动到mongo集合是否会变得简单,因为在mongo中这种关系仍需要多次查询运行。

感谢您的投入。

2 个答案:

答案 0 :(得分:1)

它既可以是/也可以是我,不是两者兼而有之。记录数据库应与事务数据库分开。如果你不能把所有内容都放在MongoDB中,我就拥有MySQL中的所有事务内容。复制两者中的数据,在MySQL中执行事务性JOIN,并在查询时不要将两者混合在一起。

答案 1 :(得分:0)

如果你的所有数据都在mysql中,那么你需要一个JOIN操作来在一个查询中完成它。 Mongodb不支持JOIN。也许您可以将CONTACTS数据冗余到事件。