MongoDB
 sql >> Base de données >  >> NoSQL >> MongoDB

MongoDB déroule plusieurs tableaux

Depuis la version 3.2, vous pouvez le faire avec $unwind sur les deux tableaux, $cmp les index, et $match uniquement les index égaux.

Cette solution remplira ce que vous avez écrit au cas où vous n'auriez que l'exemple de document. Si vous avez plus de documents, je ne sais pas ce que vous vous attendez à obtenir dans la sortie, mais cela peut être résolu en regroupant par _id du document.

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
        }
    }
])