MongoDB / Mongoose查询:如何根据字段的值获取不同的数据集

否认词

我使用的是nodejs猫鼬图书馆为我的MongoDB的互动。

我正在建立一个登陆页面查询(想想Netflix页面),并且每个类别(想想喜剧,恐怖,戏剧等)都需要获得15个结果。

对于每个“类别”发送查询并处理回调问题以及对数据库的繁重请求以实现简单的页面加载,似乎不是一个很好的解决方案,如下所示:

const categories = ['horror','drama','comedy']
let counterCallback = 0
let allShows = []
categories.map(category =>{
    Show.find({category: category},{limit: 15}, (err, shows)=>{
       if(shows){ allShows.push(shows)}
       allShows++
       if(allShows === categories.length){ return res.json(allShows) }
    })
})

我在考虑也许要发出$or请求,但是我不能限制每个“或”的数量。

const categories = ['horror','drama','comedy']
Show.find({
    $or:categories.map(category=> {return {category: category} })
},{limit: 10})

如何实现限制每个“类别”结果数量的请求?

谢谢

谁-假面真灵魂

您可以利用MongoDB的聚合框架来运行复杂的查询,请尝试以下查询:

var categories = ['horror', 'comedy', 'drama']

Show.aggregate([
    /** This $match would help to  limit docs to particular categories, as each pipeline in facet stage has to iterate to all docs in collection for thrice as 3 categories given, So at least limiting docs to needed categories. */
    { $match: { category: { $in: categories } } }, 
    {
        $facet: {
            'horror': [{ $match: { category: 'horror' } }, { $limit: 1 }],
            'comedy': [{ $match: { category: 'comedy' } }, { $limit: 1 }],
            'drama': [{ $match: { category: 'drama' } }, { $limit: 1 }]
        }
    }])

测试: MongoDB-操场

另外,您也可以使用以下方法实现此目的$group

Show.aggregate([
    { $match: { category: { $in: categories } } },
    { $group: { _id: '$category', shows: { $push: '$$ROOT' } } },
    { $project: { category: '$_id', _id: 0, shows: { $slice: ['$shows', 1] } } },
    /** Below two stages are optional  */
    { $group: { _id: '', data: { $push: '$$ROOT' } } },
    { $project: { _id: 0 } }
])

测试: MongoDB-操场

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何从猫鼬mongodb查询中获取字段的值?

来自分类Dev

如何从猫鼬mongodb查询中获取字段的值?

来自分类Dev

MongoDB查询-展开并匹配保留null或不同值/根据条件添加新字段

来自分类Dev

如何使用mongoose从MongoDb获取数据?

来自分类Dev

MongoDB罗盘:如何选择字段的不同值

来自分类Dev

无论值如何,MongoDB都可以查询不同的字段(缓慢的查询分析)

来自分类Dev

Mongoose / Mongodb:从填充的查询数据中排除字段

来自分类Dev

如何根据快递的日期从mongoDB获取数据?

来自分类Dev

如何获取数组mongodb中的字段值

来自分类Dev

如何通过Mongoose虚拟字段查询MongoDB文档?

来自分类Dev

如何通过Mongoose虚拟字段查询MongoDB文档?

来自分类Dev

如何从mongodb中的同一集合查询大于不同文档中的值?

来自分类Dev

子查询以计数MongoDb中字段的不同值的数量

来自分类Dev

使用MongoDB根据该记录的值获取不同的记录

来自分类Dev

MongoDB高级查询-根据对象数组获取数据

来自分类Dev

从由toArray()转换的mongodb查询中获取字段值

来自分类Dev

MongoDb查询以获取数组中字段的最大值

来自分类Dev

如何使用 mongoose 获取 MongoDB 数据库统计信息?

来自分类Dev

MongoDB查询来自不同集合的字段

来自分类Dev

如何根据布尔字段将查询分组并在MongoDB中按布尔值分别检索所有记录?

来自分类Dev

使用MongoDb查询获取特定字段

来自分类Dev

如何在MongoDB中获取字段的最大值

来自分类Dev

如何在MongoDB中获取字段的最大值

来自分类Dev

查询MongoDB字段

来自分类Dev

mongodb查询日期字段

来自分类Dev

MongoDB:数组字段中不同值的总数

来自分类Dev

mongodb聚合查询字段值长度的总和

来自分类Dev

如何查询mongodb以基于值嵌套参数获取结果?

来自分类Dev

mongodb-Java获取字段值

Related 相关文章

  1. 1

    如何从猫鼬mongodb查询中获取字段的值?

  2. 2

    如何从猫鼬mongodb查询中获取字段的值?

  3. 3

    MongoDB查询-展开并匹配保留null或不同值/根据条件添加新字段

  4. 4

    如何使用mongoose从MongoDb获取数据?

  5. 5

    MongoDB罗盘:如何选择字段的不同值

  6. 6

    无论值如何,MongoDB都可以查询不同的字段(缓慢的查询分析)

  7. 7

    Mongoose / Mongodb:从填充的查询数据中排除字段

  8. 8

    如何根据快递的日期从mongoDB获取数据?

  9. 9

    如何获取数组mongodb中的字段值

  10. 10

    如何通过Mongoose虚拟字段查询MongoDB文档?

  11. 11

    如何通过Mongoose虚拟字段查询MongoDB文档?

  12. 12

    如何从mongodb中的同一集合查询大于不同文档中的值?

  13. 13

    子查询以计数MongoDb中字段的不同值的数量

  14. 14

    使用MongoDB根据该记录的值获取不同的记录

  15. 15

    MongoDB高级查询-根据对象数组获取数据

  16. 16

    从由toArray()转换的mongodb查询中获取字段值

  17. 17

    MongoDb查询以获取数组中字段的最大值

  18. 18

    如何使用 mongoose 获取 MongoDB 数据库统计信息?

  19. 19

    MongoDB查询来自不同集合的字段

  20. 20

    如何根据布尔字段将查询分组并在MongoDB中按布尔值分别检索所有记录?

  21. 21

    使用MongoDb查询获取特定字段

  22. 22

    如何在MongoDB中获取字段的最大值

  23. 23

    如何在MongoDB中获取字段的最大值

  24. 24

    查询MongoDB字段

  25. 25

    mongodb查询日期字段

  26. 26

    MongoDB:数组字段中不同值的总数

  27. 27

    mongodb聚合查询字段值长度的总和

  28. 28

    如何查询mongodb以基于值嵌套参数获取结果?

  29. 29

    mongodb-Java获取字段值

热门标签

归档