sql >> Databasteknik >  >> NoSQL >> MongoDB

MongoDB varva ner flera arrayer

Från version 3.2 kan du göra det med $unwind på båda arrayerna, $cmp indexen och $match endast de lika indexen.

Denna lösning kommer att fylla i det du skrev om du bara har exempeldokumentet. Om du har fler dokument vet jag inte vad du förväntar dig att få i utdata, men det går att lösa genom att gruppera efter dokumentets _id.

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. Synkronisera MongoDB via ssh

  2. Meteor använda hämta eller hitta i mallhjälpfunktioner?

  3. Få meddelande om ändrade dokument i mongodb

  4. MongoDB diakritisk känslig sökning visar inte alla rader med accent (ord med diakritiskt tecken) som förväntat och vice versa