通过“子查询”(聚合?)减少MongoDB查询的结果

时间:2018-12-24 05:54:59

标签: mongodb aggregation-framework

我们一直在努力重构我们的代码库并改进我们的API,在此事务中,出于多种原因,我们已从MySQL迁移到MongoDB。我正在努力把精力写在如何编写这个非常规查询上。

我们的查询需要考虑3个独立集合中的数据。这是唯一需要执行此操作的查询,因为我们已尝试使所有数据保持尽可能平坦。

这些集合是“用户”,“兴趣”和“匹配项”。

下面您将看到将影响查询的所有用户属性。

gender 
age 
latitude
longitude 
preferences: {
  matchmaking: { 
    orientation
    distance
    ageMinimum
    ageMaximum
    visbile
  }
}

取向值是“同性恋”,“异性恋”和“双性恋”之一。我们需要使用“首选项/匹配项”部分中的数据,以找到匹配这些首选项的其他用户。例如,查找30英里内的所有“男性”用户。

这是简单的部分,现在我们还有matches集合,我们无法向任何用户显示他们之间存在匹配项。为了找到两个用户之间的匹配项,您只需对

进行查询
users: { $all: [myId, <otherid>] }

任何返回结果的ID都不能包含在结果集中。

此后,我们有了interests集合,以查询您感兴趣的内容。

{ user: myId, interestedIn: <otherid> }

任何在此处返回结果的ID也不能包含在结果集中。

我很难弄清楚如何在MongoDB中做到这一点,而且似乎没有什么内容。

编辑:我并不是要问任何人写整个查询,但是如何减少多个集合的示例将大有帮助。

0 个答案:

没有答案