db.users.aggregate(
{$unwind: "$linkRole"},
{$group: {"_id": {org: "$linkRole.Organization", role: "$linkRole.role"},
count: {"$sum": 1}}},
{$match: { "count": { "$gte": 2 }}})
var res = db.organizations.find({
docStatus: {
$ne: "delete"
},
isAuthorized: true
}, {
_id: 0,
guid: 1
}).toArray();
db.users.find({
org: {$in: [res]}, active:true
})
linkRole[0..n].role:superadmin/admin/user
linkRole[0..n].Organization:a32cc286-256b-40e5-fc5d-5ecbdc341ab1.....
И иногда в 1 документе(пользователе) 2, 3..10 раз повторяется массив в две строки - с той же ролью в той же организации.
Т.е. один Иван Иванович 10 раз в одной организации является user'ом или admin'ом.
$addToSet выглядит именно тем, что нужно. Но я не могу понять как его применить в update так, чтобы перебор шёл по документам (_id) и в них оставалась только уникальные записи.