Bem, sua edição basicamente tem a resposta. Simplesmente
$match
onde a matriz está vazia:db.getCollection('collA').aggregate([
{ "$lookup": {
"from": "collB",
"localField": "_id",
"foreignField": "_id",
"as": "collB"
}},
{ "$match": { "collB.0": { "$exists": false } } }
])
O
$exists
teste no índice do array de 0
é a maneira mais eficiente de perguntar em uma consulta "este é um array com itens nele".