首页 > 解决方案 > 如何根据填充项的 null 过滤数据

问题描述

在此处输入图像描述

我确实有对象。例如 -

{ 
 active: true,
 category: { _id: 1212, name: 'something', active: false},
 name: "test",
}

我的类别对象来自 mongodb 填充项目。现在,当我填充项目时,我根据 active=false 对其进行过滤。在类别字段上返回 null 。例如,

{ 
 active: true,
 category: null,
 name: "test",
}

现在我的主要重点是如果类别为空,则删除此对象。

我确实像这样使用 -

  match: { category: { $exists: true } },
  populate: "category"

但它不起作用,因为最初存在类别对象。但是在填充并基于活动状态后,它变为空。

那么如果类别为空,那么删除此对象的最佳方法是什么。

注意:我知道它可以使用聚合。但是我不使用聚合,因为查询太长了。如果我做聚合,我必须改变很多事情。并且填充是多级的。所以这将是一个问题。

标签: javascriptnode.jsmongodb

解决方案


在您的代码中,您正在寻找一个“存在”的字段,即使它的值为空,该字段就在那里。您可以只搜索空值,它应该可以工作。

 match: { category: null }

推荐阅读