如何在MongoDB中筛选文档获取全部未解决与指定数量已解决数据
MongoDB 多条件查询合并实现方案
你可以使用MongoDB聚合管道中的$facet运算符,同时查询两类符合要求的文档再合并结果,无需发起两次独立查询,实现代码如下:
db.query.aggregate([ { $facet: { // 匹配所有未解决的文档 unsolved_list: [ { $match: { is_solved: false } } ], // 匹配10条已解决的文档 solved_list: [ { $match: { is_solved: true } }, { $limit: 10 } ] } }, // 合并两个数组得到最终结果集 { $project: { final_result: { $concatArrays: ["$unsolved_list", "$solved_list"] } } } ])
如果需要指定已解决文档的筛选顺序,比如优先返回最新提交的已解决问题,可以在solved_list分支的$match后增加排序规则,示例如下:
solved_list: [ { $match: { is_solved: true } }, // 按_id倒序,对应按文档插入时间从新到旧排序 { $sort: { _id: -1 } }, { $limit: 10 } ]
内容的提问来源于stack exchange,提问作者Alok Prakash
相关产品推荐
相关产品推荐

