sql >> Database >  >> NoSQL >> MongoDB

MongoDB ontspant meerdere arrays

Vanaf versie 3.2 kun je het doen met $unwind op beide arrays, $cmp de indexen, en $match alleen de gelijke indexen.

Deze oplossing zal invullen wat je hebt geschreven voor het geval je alleen het voorbeelddocument hebt. Als u meer documenten heeft, weet ik niet wat u in de uitvoer verwacht, maar het is op te lossen door te groeperen op _id van het 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
        }
    }
])


  1. Redis py:wanneer verbindingspool gebruiken?

  2. Gegevenscompressie inschakelen in MongoDB 3.0

  3. Haal een bepaald element uit de mongoDB-array

  4. Redis beheerde Pub/Sub-server