Bueno, tu edición básicamente tiene la respuesta. Simplemente $match
donde la matriz está vacía:
db.getCollection('collA').aggregate([
{ "$lookup": {
"from": "collB",
"localField": "_id",
"foreignField": "_id",
"as": "collB"
}},
{ "$match": { "collB.0": { "$exists": false } } }
])
El $exists
prueba en el índice de matriz de 0
es la forma más eficiente de preguntar en una consulta "¿es esta una matriz con elementos?".