通过多个字段值获取文档

时间:2017-09-19 14:27:56

标签: javascript mongodb mongoose

我有一个{ 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] } mongodb架构如下:

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() })
    }

存在多个类别和许多属于特定类别的项目。

我希望按类别对项目进行排序:

<a data-toggle="popover" title="Mini profile" data-content="<%= post.user.location %><%= post.user.website %>">
     <%= post.user.fullname %>
</a>

我有这段代码:

<script type="text/javascript">
$(document).ready(function(){
    $('[data-toggle="popover"]').popover({
        placement : 'bottom',
        trigger : 'hover'
    });
});
</script>

这很好,但我可以优化此代码吗?我可以在一个查询中执行此操作吗?

2 个答案:

答案 0 :(得分:1)

您可以使用map或forEach来优化循环

const result = categories.map((category) => {
   return {
    category,
    items: await Food.find({ category: category }).exec()
}
})

答案 1 :(得分:1)

使用聚合管道根据CSV#open对您的Food项进行分组:

Categories

有关详情,请参阅MongoDB Aggregation$group