Lo que quiero es que en la consulta de los usuarios devuelva los data del email siempre que private sea falso.
este es mi esquema
const userSchema = new Schema({ email: { private: { type: Boolean, default: false, }, data: { type: String, unique: true, required: true, }, }, password: { type: String, required: true, } })Traté de hacerlo de esta manera, pero no funciona porque no es dinámico.
const user = await User.find({}, '-email.data')el resultado que busco es este
[ { _id: 0, email: { private: true } }, { _id: 1, email: { private: false, data: 'email@email.com' } } ]Pruebe el operador $cond , verifique si email.private es true y luego devuelva solo la propiedad private ; de lo contrario, el objeto de email completo
const user = await User.find({}, { email: { $cond: [ { $eq: ["$email.private", true] }, { private: true }, "$email" ] } })