【问题标题】:prevent MongoDB aggregate with $match from returning an empty Array防止带有 $match 的 MongoDB 聚合返回一个空数组
【发布时间】:2021-10-24 11:49:30
【问题描述】:

我有一个这样的聚合函数

 app.get('/feed', (req, res) => {
 TFBlog.aggregate([  
   { $sample: {size: 5} },
   { $match:  {"published": true} },
  
   ]).then((docs)=>{
   res.render('explore',{docs:docs});
 });
});

现在如果聚合找到不满足 {published: true} 的文档,它只会返回一个空数组

所以在许多用例中,我在返回数组中得到 4 或 3 个文档而不是 5 个

无论如何,我希望这个函数总是返回 5 个随机文档,并带有 $match 条件!!

我怎样才能做到这一点请解释一下?

【问题讨论】:

  • 在您的情况下,匹配条件应该通过。 它只是返回一个空数组 是错误的。您能否向我们展示包含必要字段和预期输出的示例文档

标签: javascript node.js mongodb mongoose


【解决方案1】:

$match 条件移到顶部?

db.collection.aggregate([  
   { $match:  {"published": true} },
   { $sample: {size: 5} }
])

【讨论】:

  • 天哪,它成功了!谢谢伙计,我忽略了暂存顺序!
猜你喜欢
  • 2021-01-14
  • 2019-03-27
  • 2020-06-24
  • 2021-03-30
  • 2015-07-23
  • 1970-01-01
  • 1970-01-01
  • 2021-12-16
  • 2023-02-13
相关资源
最近更新 更多