Estoy tratando de seleccionar todos los usuarios que hacen referencia a un grupo que hace referencia a un permiso que tiene "válido" establecido en verdadero (posiblemente múltiples). Para lograr esto, planeo usar una agregación con una búsqueda.
db={ "users": [ { "_id": "1", "groups": [ "2" ] }, { "_id": "2", "groups": [ "1" ] } ], "group": [ { "_id": "1", "permissions": [ "12", "3" ] }, { "_id": "2", "permissions": [ "3", "2" ] } ], "permission": [ { "_id": "12", "valid": true }, { "_id": "3", "valid": true }, { "_id": "2", "valid": true } ] }No puedo pensar en una manera eficiente/simple de hacer esto.
tengo 2 ideas:
¿Alguna idea o entrada sobre esto?
$unwind en la búsqueda como campos locales,group con la respuesta de permissions porque no es necesario en la siguiente etapa db.users.aggregate([ { $lookup: { from: "group", localField: "groups", foreignField: "_id", as: "group" } }, { $lookup: { from: "permission", localField: "group.permissions", foreignField: "_id", as: "group" } }, { $match: { "group.valid": true } }, { $unset: "group" } ])