sql >> Databáze >  >> NoSQL >> MongoDB

MongoDB rozbalte více polí

Od verze 3.2 to můžete udělat pomocí $unwind na obou polích $cmp indexy a $match pouze stejné indexy.

Toto řešení vyplní to, co jste napsali, v případě, že máte pouze vzorový dokument. Pokud máte více dokumentů, nevím, co očekáváte ve výstupu, ale je to řešitelné seskupením podle _id dokumentu.

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. Dotaz MongoDB s podmínkou „nebo“.

  2. Jak převedu vlastnost v MongoDB z textu na typ data?

  3. MongoDB:agregační rámec:$match mezi poli

  4. Geoprostorová podpora v MongoDB