我希望能够得到一些关于如何在MongoDB中最好地处理这种类型查询的指导。
我有一个购买数据库,每个购买都有一个course
属性以及一个购买日期。
我想要的是在某人购买初始产品后发生的购买清单。
因此 - 这里是一些伪查询:
// first find everyone who signed up for course A
{ course: 'a' }
那么
/*
out of those people, filter for those who in the future signed up
for another course
*/
{
course: { $in: ['b','c','d']},
date: { $gt: $courseA.purchaseDate }
}
这是否可以使用聚合来实现?还是每次初始购买都需要进行多个数据库调用以检查是否有未来的购买?
以下是每次购买的数据示例:
{ email: 'wes@example.com', course: 'a', purchaseDate: 10 },
{ email: 'wes@example.com', course: 'b', purchaseDate: 20 }, // match
{ email: 'wes@example.com', course: 'c', purchaseDate: 5 }, // not
{ email: 'nancy@example.com', course: 'a', purchaseDate: 5 },
{ email: 'nancy@example.com', course: 'c', purchaseDate: 6 }, // match
{ email: 'nancy@example.com', course: 'b', purchaseDate: 10 }, // match
{ email: 'nancy@example.com', course: 'd', purchaseDate: 1 }, // not