У меня есть тысячи документов в mongodb, которые я должен сгруппировать по groupId и подсчитать их, если groupId существует и не равен нулю. Если это поле имеет нулевое значение, результат должен показывать 0 в счетчике. Вот примеры документов
{
"_id": ObjectId("5e706eb075658f3af3a61694"),
"name": "child doc 1",
"email": "abcd@yopmail.com",
"groupId": ObjectId("5e70708775658f3af3a61695"),
"createdAt": ISODate("2020-03-17T12:01:12.525+05:30"),
"updatedAt": ISODate("2020-03-17T12:01:12.525+05:30"),
"__v": 0
},
{
"_id": ObjectId("5e706eb075658f3af3a61694"),
"name": "child doc 2",
"email": "abcd@yopmail.com",
"groupId": ObjectId("5e70708775658f3af3a61695"),
"createdAt": ISODate("2020-03-17T12:01:12.525+05:30"),
"updatedAt": ISODate("2020-03-17T12:01:12.525+05:30"),
"__v": 0
},
{
"_id": ObjectId("5e706eb075658f3af3a61694"),
"name": "child doc 3",
"email": "abcd@yopmail.com",
"groupId": ObjectId("5e70708775658f3af3a61695"),
"createdAt": ISODate("2020-03-17T12:01:12.525+05:30"),
"updatedAt": ISODate("2020-03-17T12:01:12.525+05:30"),
"__v": 0,
},
{
"_id": ObjectId("5e70708775658f3af3a61695"),
"name": "parent doc",
"email": "abcd@yopmail.com",
"groupId": null,
"createdAt": ISODate("2020-03-17T12:01:12.525+05:30"),
"updatedAt": ISODate("2020-03-17T12:01:12.525+05:30"),
"__v": 0
}
Для тех документов, у которых groupId не равен нулю, т.е. дочерних документов, количество должно быть 0. Кроме того, результат НЕ должен содержать те документы, у которых groupId НЕ равен NULL. , Результат должен быть примерно таким,
{
"_id": ObjectId("5e70708775658f3af3a61695"),
"name": "parent doc",
"email": "abcd@yopmail.com",
"groupId": null,
"createdAt": ISODate("2020-03-17T12:01:12.525+05:30"),
"updatedAt": ISODate("2020-03-17T12:01:12.525+05:30"),
"count": 3,
"__v": 0
}
Как я могу это сделать?