【发布时间】:2019-07-10 07:15:46
【问题描述】:
所以在我的数据库中,我有 3 个集合,它们看起来像这样:
客户:
customers = [
{_id: 1, username: "jack", ... },
{_id: 2, username: "jane", ... }
...
]
评论:
reviews = [
{ _id: 1, customerID: 1, message: "my message", ...}
...
]
评论:
comments = [
{ _id: 1, reviewID: 1, customerID: 2, message: "my response" ...}
...
]
客户可以发表评论,也可以评论其他评论。
所以,我想要的是一个 mongodb aggregation 查询:
检索评论。
进行评论的客户的数据。
该评论中的 cmets。
对该评论发表评论的客户的数据。
即
reviews = [
{
_id: 1,
username: "jack",
message: "my message"
comments: [
{ _id: 1, username: "jane", message: "my response", ...},
...
]
...
}
...
]
【问题讨论】:
-
我知道这不是您要问的,但是您正在以一种真正的关系(即不是 mongo 友好)方式构建数据,这就是为什么您遇到问题的原因唯一的解决方案是为看起来像普通查询的两个
$lookups。解决这个问题的更标准的 mongo-y 方法是拥有一个reviews集合,该集合看起来类似于您的最终输出,在 cmets 数组中的 cmets 上有非规范化的用户名
标签: node.js mongodb mongoose aggregation-framework