如何从集合中获得两个字段的不同组合

问题描述 投票:1回答:1

来自包含代表与以下产品相似的产品的文档的集合:

[
    {
        code: '0WE3A5CMY',
        name: 'lorem',
        category: 'voluptas',
        variants: [
            {
                color: 'PapayaWhip',
                stock: 17,
                barcode: 4937310396997
            },
            {
                color: 'RoyalBlue',
                stock: 13,
                barcode: 9787252504890
            },
            {
                color: 'DodgerBlue',
                stock: 10,
                barcode: 9794456959791
            }
        ]
    },
    {
        code: '0WE3A5CMX',
        name: 'ipsum',
        category: 'temporibus',
        variants: [
            {
                color: 'RoyalBlue',
                stock: 13,
                barcode: 2342520211840
            },
            {
                color: 'DodgerBlue',
                stock: 10,
                barcode: 2342520211841
            }
        ]
    }
]

我想检索variants.colorcategory的不同组合。所以结果应该是:

[
    {
        category: 'voluptas',
        color: 'PapayaWhip',
    },
    {
        category: 'voluptas',
        color: 'RoyalBlue',
    },
    {
        category: 'voluptas',
        color: 'DodgerBlue',
    },
    {
        category: 'temporibus',
        color: 'RoyalBlue',
    },
    {
        category: 'temporibus',
        color: 'DodgerBlue',
    }
]

[基于一些粗略的研究,我认为我将不得不使用聚合,但是我从未使用过这些聚合,而且我所看到的所有示例似乎都涉及更复杂的用例,但我不确定该如何进行。] >

[由代表类似于以下产品的文档组成的集合:[{代码:'0WE3A5CMY',名称:'lorem',类别:'voluptas',变体:[...

mongodb mongodb-query tuples aggregation-framework distinct-values
1个回答
1
投票
由于variants是一个数组,您需要对其展开并在两个字段上分组以基于category + 'variants.color'组合获得唯一的文档。
© www.soinside.com 2019 - 2024. All rights reserved.