Я пытаюсь отфильтровать записи с условием для каждого пользователя с минимальным количеством 7 транзакций в месяц и каждой транзакцией, превышающей 1000 . У меня есть ниже json после 2-го этапа конвейера после отфильтровывания типа транзакции, которую я хочу, получая месяц устаревшим и используя groupby, чтобы получить количество транзакций каждого пользователя в месяц. Я не могу применить вышеуказанное условие, чтобы получить необходимые данные после этого.
Образец Json:
{
"_id" : {
"month" : 2,
"sender" : "123dd3"
},
"data" : [
{
"name" : "name1",
"amount" : 1000,
"sender" : {
"id" : "123455",
"name" : "send 02",
"phone" : "1234567"
},
"service" : "109",
"createdAt" : "2020-02-07T16:24:56.047+06:30",
"month" : 2
},
{
"name" : "name1",
"amount" : 10400,
"sender" : {
"id" : "123455",
"name" : "send 02",
"phone" : "1234567"
},
"service" : "109",
"createdAt" : "2020-02-07T16:25:22.019+06:30",
"month" : 2
},
{
"name" : "name1",
"amount" : 10400,
"sender" : {
"id" : "123455",
"name" : "send 02",
"phone" : "1234567"
},
"service" : "109",
"createdAt" : "2020-02-07T16:26:16.703+06:30",
"month" : 2
}
],
"count" : 3
}
Мой запрос:
[{
$match: {
service: '109'
}
}, {
$addFields: {
"month": {
"$month": "$createdAt"
}
}
}, {
$group: {
_id: {
'month': '$month',
'sender': '$sender.id'
},
data: {
$push: '$$ROOT'
},
count: {
$sum: 1
}
}
}, {
$project: {
'_id': 1,
'data': 1,
'count': 1,
'cond': {
$cond: [{
$gte: ["$data.amount", 1000]
}, true, false]
}
}
}]
I Я не могу правильно выполнить требуемое условие, так как в данных есть несколько записей, и мне нужно применить это условие к каждой из них, а количество транзакций будет больше, чем равно 7 .