Estoy actualizando la versión de mangosta de 5 a 6 y encontré un cambio en el comportamiento.
Este es un pequeño ejemplo: Tenemos dos modelos
const MessageSchema = new mongoose.Schema({ text: String }); const Message = mongoose.model('Message', MessageSchema); const Notification = Message.discriminator( 'Notification', new mongoose.Schema({important: Boolean}) );Y digamos, creamos dos documentos:
const m = new Message({text: 'Some text 1'}); await m.save(); const n = new Notification({important: true, text: 'Some text'}); await n.save();Y ejecutamos esta consulta:
await Message.find({important: true}) En mongoose v5, la consulta será important a pesar de que no esté declarada en el esquema del Message . Y el resultado será un solo documento.
Sin embargo, en la nueva versión, ignorará lo importante si consulta Messages y devolverá todos los documentos, porque sin consulta important es solo {}.
Mi pregunta es, ¿cómo puedo lograr el mismo comportamiento con la nueva versión?
Sé que podría usar el modelo de Notification en lugar de Messages , pero imagínese si hubiera varios modelos como Notification (hijos de Message ), que tuvieran important en ellos, y quisiera buscar en todos ellos.