Мне нужно найти счет всех соответствующих элементов массива и count = 0, если вложенный массив не содержит значений. Вот моя структура сущности данных.Найти количество всех совпадающих элементов в массиве
{
name:A,
issues:[1,2,3,4]
}
{
name:B,
issues:[1,2]
}
{
name:C,
issues:[3,4]
}
Если поиск пользователей для issues:[1,2]
, я хочу, чтобы мой набор результатов, чтобы выглядеть
[{
name:A,
count:2
}
{
name:B,
count:2
}
{
name:C,
count:0
}]
Я использую ниже запроса для достижения этой цели, но это только возвращает меня результат
[{
name:A,
count:2
}
{
name:B,
count:2
}]
который определенно я знаю из-за $ match, я делаю
{'$unwind':'$issues'}
,{'$match':{'allissues': {$in: p.issues? p.issues.map(Number):[]}}}
,{ '$group' :{_id:'$_id', name :{ $first: '$name' },count: { $sum: 1 }} }'
вы можете попробовать что-то вроде этого. 'db.collection.aggregate ([{$ project: {count: {$ size: {$ setIntersection: [p.issues," $ issues "]}}}}])' – Veeram