Мне нужно найти общее количество дублированных профилей на один уровень организации. У меня есть документы, как показано ниже:Как использовать вложенную группировку в MongoDB
{
"OrganizationId" : 10,
"Profile" : {
"_id" : "75"
}
"_id" : "1"
},
{
"OrganizationId" : 10,
"Profile" : {
"_id" : "75"
}
"_id" : "2"
},
{
"OrganizationId" : 10,
"Profile" : {
"_id" : "77"
}
"_id" : "3"
},
{
"OrganizationId" : 10,
"Profile" : {
"_id" : "77"
}
"_id" : "4"
}
Я написал запрос, который является группой ProfileId и OrganizationId. Результаты я получаю, как показано ниже:
Organization Total
10 2
10 2
Но я хочу, чтобы получить сумму общего на уровне организации, это означает, что Org 10 должны иметь одну строку с суммой 4.
запросе я используя, как показано ниже:
db.getSiblingDB("dbName").OrgProfile.aggregate(
{ $project: { _id: 1, P: "$Profile._id", O: "$OrganizationId" } },
{ $group: {_id: { p: "$P", o: "$O"}, c: { $sum: 1 }} },
{ $match: { c: { $gt: 1 } } });
Любые идеи? Пожалуйста, помогите
ваш запрос на самом деле возвращает правильный результат: '{" _id ": {" p ":" 75 "," o ": 10}," c ": 4}' –
Спасибо за ваш ответ. Этот запрос возвращает несколько записей для той же организации, что и снова, я должен подсчитать сумму всего вручную. – Srinivas
@Srinivas Повторите свой вопрос, указав в своих комментариях, что вы хотите получить сумму 2 на 10, но в своем вопросе вы упоминаете «это означает, что Org 10 должен иметь одну строку с суммой 4.» - оба утверждения не соответствуют – DAXaholic