Javascript 通过几个字段值获取文档
我有一个Javascript 通过几个字段值获取文档,javascript,mongodb,mongoose,Javascript,Mongodb,Mongoose,我有一个foodmongodb模式,如下所示: { name: 'Pork meat', category: 'Meat' } 存在属于特定类别的多个类别和多个项目 我希望按类别对项目进行排序,如下所示: { category: 'Meat', items: [ITEMS_WHICH_BELONG_TO_THIS_CATEGORY] }, { category: 'Drink', items: [ITEMS_WHICH_BELONG_TO_THIS_CATEGORY] }, { categor
food
mongodb模式,如下所示:
{
name: 'Pork meat',
category: 'Meat'
}
存在属于特定类别的多个类别和多个项目
我希望按类别对项目进行排序,如下所示:
{
category: 'Meat', items: [ITEMS_WHICH_BELONG_TO_THIS_CATEGORY]
},
{
category: 'Drink', items: [ITEMS_WHICH_BELONG_TO_THIS_CATEGORY]
},
{
category: 'Souce', items: [ITEMS_WHICH_BELONG_TO_THIS_CATEGORY]
}
我有以下代码:
const categories = await Food.find().distinct('category').exec()
const result = []
for (let i = 0; i < categories.length; i++) {
result.push({ category: categories[i], items: await Food.find({ category: categories[i] }).exec() })
}
const categories=wait Food.find().distinct('categories').exec()
常量结果=[]
for(设i=0;i
这很好,但是我可以优化这段代码吗?我可以在一个查询中完成此操作吗?您可以使用map或forEach来优化循环
const result = categories.map((category) => {
return {
category,
items: await Food.find({ category: category }).exec()
}
})
您可以使用map或forEach来优化循环
const result = categories.map((category) => {
return {
category,
items: await Food.find({ category: category }).exec()
}
})
使用聚合管道根据
类别对食品
项目进行分组
:
Food.aggregate([{
$group : {
_id : "$category",
items : { $push : "$name"}
}
}],function(err, result){
//result will have food items grouped by category
})
有关更多信息,请参见MongoDB和。使用聚合管道根据
类别对食品
项目进行分组:
Food.aggregate([{
$group : {
_id : "$category",
items : { $push : "$name"}
}
}],function(err, result){
//result will have food items grouped by category
})
有关更多信息,请参见MongoDB和。使用db.collection\u name.aggregate([{$group:{{{u id:“$category”,items:{$push:$$ROOT}},{$sort:{{u id:1}]))
这很好,但是我可以优化这段代码吗?我可以在一个查询中做到这一点吗
-单次查询与多次查询并不总是===更好的性能,但是,说了这个问题的答案可能只是基于意见-而且,这更像是@Veeram的问题,你有最好的解决方案,谢谢lot@Fran感谢s、 我将考虑futureUsedb.collection\u name.aggregate([{$group:{{u id:“$category”,items:{$push:$$ROOT}}}},{$sort:{{u id:1}])
这很好,但是我可以优化这段代码吗?我可以在一个查询中做到这一点吗
-单次查询与多次查询并不总是===更好的性能,但是,说了这个问题的答案可能只是基于意见-而且,这更像是@Veeram的问题,你有最好的解决方案,谢谢lot@Fran感谢s、 我会考虑将来的事