我有4种产品。我想知道有product-4或product-2的用户的数量
样本数据:
[
{
"user_id": 1,
"product_type": "product-1"
},
{
"user_id": 1,
"product_type": "product-4"
},
{
"user_id": 1,
"product_type": "product-4"
},
{
"user_id": 2,
"product_type": "product-1"
}
]用户-1有两个product-4和一个product-1 (计算值为2)。
用户-2只有product-1,但没有product-4 (因此不算)
我就是这么努力的
db.collection.aggregate([
{
$match: {
product_type: {
$in: [
"product-1",
"product-2",
],
},
},
},
{
$group: {
_id: "$user_id",
},
},
{
$match: {
user_id: { $in: "$_id"}, // I want to use $group's result in here
product_type: "product-4",
},
}
]);预期成果如下:
[
{
"_id": 1,
"count": 2
},
{
"_id": 2,
"count": 0
}
]注意:我没有后端,只能使用mongodb。
发布于 2022-11-30 13:43:51
这能回答你的问题吗?
db.collection.aggregate([
{$group: {_id: "$user_id", data: {$push: "$product_type"}}},
{$match: {$expr: {$or: [
{$in: ["product-1", "$data"]},
{$in: ["product-2", "$data"]}
]}}},
{$project: {
count: {
$size: {
$filter: {
input: "$data",
cond: {$eq: ["$$this", "product-4"]}
}
}
}
}}
])看看它如何在操场实例上工作
https://stackoverflow.com/questions/74628599
复制相似问题