【发布时间】:2021-06-14 06:21:20
【问题描述】:
我的收藏中有几条记录,我只需要找到那些具有两个不同属性的记录,然后按其中一个属性对它们进行分组。我一直在寻找答案,但没有任何成功(但我对 mongo 还是很陌生)。为了更好地解释我自己,我将使用这个例子:
我的 MongoDB 集合中有以下数据(表示向 webhook 发出的请求、由谁发出的请求、是否成功以及它的内容):
{ sender: 6, domainID: "AAA", success: false, content: "Lorem ipsum" }
{ sender: 6, domainID: "AAA", success: true, content: "Lorem ipsum" }
{ sender: 7, domainID: "CCC", success: true, content: "Lorem ipsum" }
{ sender: 8, domainID: "CCC", success: false, content: "Lorem ipsum" }
现在我已经编写了一个查询,它按sender 和aggregate 对请求进行分组。然而,这只是问题的一部分。我也有兴趣只获取对某个用户失败的domainID 的请求(这是我正在努力解决的部分)。使用先前的数据,查询应该返回如下内容:
[
{
_id: 8,
pendingRequests: [
{ content: "Lorem ipsum" }
]
}
]
为此,我检查success = false,但我还需要检查sender 和domainID 是否没有其他记录。
到目前为止,我的解决方案是这个:
const unread = await WebhooksCollection.aggregate([
{ $match: { success: false } },
{
$group: {
_id: '$sender',
pendingRequests: {
$push: {
content: "$content"
}
}
}
}
]);
我的麻烦是检查是否没有更多记录/尝试该 sender 和 domainID。
【问题讨论】:
标签: mongodb mongoose mongodb-query