sql >> Base de Datos >  >> NoSQL >> MongoDB

MongoDB desenrolla múltiples arreglos

Desde la versión 3.2 puedes hacerlo con $unwind en ambas matrices, $cmp los índices y $match sólo los índices iguales.

Esta solución completará lo que escribió en caso de que solo tenga el documento de ejemplo. Si tiene más documentos, no sé qué espera obtener en la salida, pero se puede resolver agrupando por _id del documento.

db.test.aggregate([
    {
        $unwind: {
            path: '$dates',
            includeArrayIndex: 'dates_index',
        }
    },
    {
        $unwind: {
            path: '$numbers',
            includeArrayIndex: 'numbers_index',
        }
    },
    {
        $project: {
            dates: 1,
            numbers: 1,
            compare: {
                $cmp: ['$dates_index', '$numbers_index']
            }
        }
    },
    {
        $match: {
            compare: 0
        }
    },
    {
        $project: {
            _id: 0,
            dates: 1,
            numbers: 1
        }
    }
])