【发布时间】:2017-06-18 06:51:41
【问题描述】:
我正在寻找有关如何在 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
【问题讨论】:
-
你能发一份样本文件吗?
-
刚刚发布了一个例子-谢谢
-
我建议不要像您描述的那样解决问题,而是执行以下操作 1. 分组,以便每个用户拥有一个文档以及他们购买的所有课程 2. 过滤所有未购买的用户course
x这不会给你所有课程之后课程但会让你更接近
标签: mongodb mongoose mongodb-query aggregation-framework