如何解决MongoDB如何限制每个组/类别/条件的结果?
假设我有一个产品库存数据库,其中列出了每个产品实例的状态。
[
{ prod: A,location: 1,status: 1 },{ prod: A,status: 2 },location: 2,location: 3,{ prod: B,{ prod: C,status: 1 }
]
我们有一些动态查询对,例如
[A: 2,B: 4]
其中数字是相应产品的结果限制。 (意味着我们需要两个As和四个B)(当然可以有C和D等)
现在我知道在聚合中我们可以匹配status = 1和prod%in%[A,B]。
我们可以对整个查询结果设置一个总的$ limit,例如仅过滤10个条目。
$ slice也没有用,因为它不能采用多个参数。
因此,我必须进行多个查询还是有一种有效的方法来一次聚合吗?
(我进行了很多搜索,似乎我们只为每个组提供前N个结果的解决方案。
例如:Multiple limit condition in mongodb)
编辑:
需要澄清的是,基本上我希望对不同的产品使用不同的限制。
这是我可以做的,使用for循环来执行多个查询。
但是,有没有一种方法可以一种聚合而不循环?
q = {A:2,B:4};
allResult = [];
Object.keys(q).forEach(k => {
result = db.find({prod:k}).limit(q[k]).exec(); //find for one prod
allResult = allResult.concat(result);
});
预期产量:
[
{ prod: A,status: 2 }
]
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。