条件 Mongo 过滤器
Posted
技术标签:
【中文标题】条件 Mongo 过滤器【英文标题】:Conditional Mongo Filter 【发布时间】:2021-11-20 03:15:36 【问题描述】:我只在用户希望根据标准过滤时才考虑过滤。
我可以使用 $in 很好地过滤,但是当 $in 过滤器中使用的条件没有提供时,它会抱怨它需要一个数组。用 [] 替换它会导致它返回为空,并且我没有要插入的所有可能值的列表(并且不确定我是否想要)
有什么想法吗?下面的颜色是可选标准。 *如果有一个我可以使用的跳过标志会很好。
const profiles = await Profile.aggregate([
$geoNear:
...geoFilter,
,
,
$match:
$and: [
_id:
$ne: Profile.castID(req.user.profileID),
,
colors: $in: colors ,
,
],
,
,
$skip: skip ,
$limit: limit ,
]);
【问题讨论】:
【参考方案1】:使用这个:
var match = _id: $ne: Profile.castID(req.user.profileID) ;
if (typeof colors != "undefined")
match.colors = $in: colors ;
Profile.aggregate([
$geoNear:
...geoFilter,
,
,
$match: match ,
$skip: skip ,
$limit: limit ,
]);
您不需要$and
,但是如果您有需要使用它的情况
var match = [ _id: $ne: Profile.castID(req.user.profileID) ];
if (typeof colors != "undefined")
match.push(colors: $in: colors );
Profile.aggregate([
$geoNear:
...geoFilter,
,
,
$match: $and: match,
$skip: skip ,
$limit: limit ,
]);
【讨论】:
以上是关于条件 Mongo 过滤器的主要内容,如果未能解决你的问题,请参考以下文章
使用 Mongo 模板在 Spring Boot 中过滤内部 Arraylist 项的 Mongo 查询