MongoDB
 sql >> Database >  >> NoSQL >> MongoDB

MongoDB svolge più array

Dalla versione 3.2 puoi farlo con $unwind su entrambi gli array, $cmp gli indici e $match solo gli indici uguali.

Questa soluzione popolerà ciò che hai scritto nel caso in cui tu abbia solo il documento di esempio. Se hai più documenti non so cosa ti aspetti di ottenere nell'output, ma è risolvibile raggruppando per _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
        }
    }
])