如何在mongodb中找到不同的多个标准

时间:2016-02-09 19:59:02

标签: javascript json mongodb

我有一个包含不同条目的集合

foods{
{ 
  name: 'rice'
  type: 'Brazilian'
},
{
  name: 'meat'
  type: 'Spanish'
}
,
{
  name: 'Cake'
  type: 'Brazilian'
}

如何选择获取每种食物的特定食物量 例如,它应该返回mongodb中每种类型的4种食物的集合(数组)

[
    [
        {
            name: 'rice'
            type: 'Brazilian'
        },
        {
            name: 'meat'
            type: 'Brazilian'
        }       
        {
            name: 'pizza'
            type: 'Brazilian'
        },
        {
            name: 'bread'
            type: 'Brazilian'
        }
    ],

    [
        {
            name: 'beans'
            type: 'spanish'
        },
        {
            name: 'fish'
            type: 'spanish'
        }       
        {
            name: 'chocolare'
            type: 'spanish'
        },
        {
            name: 'ham'
            type: 'spanish'
        }
    ]

]

1 个答案:

答案 0 :(得分:1)

使用聚合来获得所需的结果。在聚合管道中, $group 运算符在创建所需结果方面占据中心位置,因为您可以通过类型键将集合中的文档分组到管道中。分组后,您可以使用其中一个累加器运算符 $push 来创建数组。如下所示:

var pipeline = [
    {
        "$group": {
            "_id": "$type",
            "docs": {
                "$push": { "name": "$name", "type": "$type" }
            }
        }
    }
]

var result = db.foods.aggregate(pipeline).map(function (doc){ return doc.docs });
printjson(result);