Mongoose如何查找实例及其集合的所有唯一属性?

时间:2015-05-04 01:35:10

标签: node.js mongodb mongoose

我有这样的裤子系列:

{
  color: 'Red',
  'material': 'Cotton',
  size: '33x44'
},
{
  color: 'Red',
  material: 'Cotton',
  size: '38x46'
} // etc.

是否可以创建一个返回所有未更改的信息(materialcolor)的查询以及执行的所有属性变体列表(size )。

我猜这看起来像是:

Shirts.find(sizes, {color: 'Red'}, function (err, sizes) {
  // Just pseudocode here
}).distinct()

但这只是对伪代码的一次非常粗略的尝试。

1 个答案:

答案 0 :(得分:1)

如下所示的聚合查询将为您提供按颜色和材质分组的红色的唯一尺寸。

Shirts.aggregate([
    {$match: {color: 'Red'}},
    {$group: {_id: {color: '$color', material: '$material'}, sizes: {$addToSet: '$size' }}}
], function (err, result)) {
    console.log(result);
});

输出将如下:

{
    [
        {
            _id: {
                color: 'Red',
                material: 'Cotton'
            },
            sizes: [
                '33x44',
                '34x86'
            ]
        }
    ]
}