我有一个这样的不同条目的集合
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'
}
]
]
最佳答案
使用聚合可获得所需的结果。在聚合管道中,$group
运算符在创建所需结果中处于中心位置,因为您可以使用type键将集合中的文档分组到管道中。分组后,您可以使用累加器运算符之一$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);
关于javascript - 如何在mongodb中从不同的多个条件中查找,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/35301073/