MongoDB
 sql >> Datenbank >  >> NoSQL >> MongoDB

MongoDB wickelt mehrere Arrays ab

Ab Version 3.2 geht das mit $unwind auf beiden Arrays $cmp die Indizes und $match nur die gleichen Indizes.

Diese Lösung füllt das aus, was Sie geschrieben haben, falls Sie nur das Beispieldokument haben. Wenn Sie mehr Dokumente haben, weiß ich nicht, was Sie in der Ausgabe erwarten, aber es ist lösbar, indem Sie nach _id des Dokuments gruppieren.

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