Tengo dos colecciones de mongodb, Sparks y sparksteam, que se unen mediante la función de población de mongoose
este es el codigo
Books.find({"user_id": "55006c36c30f0edc5400022d",$or: [{"status": 2}, {"status": 1}]}).sort({"order_date": -1}).populate({ path: 'book_id', select: 'title _id user task_category create_date description end_date status ref_number order_date' }).exec(function (err, data) { console.log("Data found:" + data.length); data.forEach(function (check) { var obj = new Object(); if (check.book_id !== null) { obj._id = check.book_id._id; obj.title = check.book_id.title; obj.description = check.book_id.description; obj.ref_number = check.book_id.ref_number; obj.user = check.book_id.user; obj.task_category =check.book_id.task_category; obj.create_date = moment.utc(check.create_date).format("DD-MM-YYYY HH:mm:ss"); obj.status = check.book_id.status; obj.order_date = check.book.order_date; console.log(obj); }Al obtener los datos, también obtiene valores nulos, que son los _id que no están disponibles en la colección Sparks. ¿Cómo recupero solo aquellos objetos cuyos _ids no son nulos, es decir, cómo hacer que ignore por completo los valores nulos? ?
Cuando ejecuta una consulta de relleno, internamente ejecuta una función findById() y devuelve todos los datos. Sin embargo, cuando no puede encontrar ningún documento que coincida con ese _id, devuelve el objeto nulo.
No hay forma de consultar objetos de referencia no nulos de antemano. Pero hay formas de filtrar valores nulos rápidamente.
Puede filtrar su resultado final con _.filter de la biblioteca lodash. Enlace: https://lodash.com/docs/4.17.4#filter
someSchema.post('remove', function(doc) {// actualice sus documentos aquí});