我需要帮助过滤使用3+参数的反应性最小化收集。首先,我已经通过发布/订阅从服务器的mongo集合中加载了minimongo。现在,我希望过滤该集合,让用户只能看到集合中与过滤器相同的对象。首先,我有搜索查询过滤器,检查输入字符串是否与集合中的某些字段相同:
Job.find({ $or: [ { Name: regex }, { Description: regex }, ]});
这部分工作做得很好。现在第二个过滤器:我在对象中有字段,如果该特定作业是远程友好的则为true,如果不是,则为false,我想如果用户启用该过滤器,他只看到远程友好的作业位置,如果他禁用它,他可以看到所有可用的工作(当然+搜索查询):
if (remoteQuery === true ) {
return Job.find({ $or: [ { Name: regex }, { Description: regex }, ] , Remote: true});
}
这是有效的,但这是不好的方法。现在最大的问题来自最后一个过滤器:我还有一个存储" job" (集合对象)类型。类型可以是1,2,3或4.那么我怎么能说最小化,例如"仅显示有"前端"内部(搜索查询),它是远程友好的,并且内部有第三个过滤器2和3;
Job.find({ $or: [ { Name: "Front-end"}, { Description: "Front-end"}, ] , Remote: true, positionType: [2,3],});
这样的东西?谢谢!
答案 0 :(得分:2)
听起来您正在寻找MongoDB查询$in
运算符:
$in
运算符选择字段值等于指定数组中任何值的文档。
因此,您的第三个查询可能如下所示:
Job.find({
positionType: {
$in: [2, 3] // Matches documents where `positionType` is either 2 or 3
},
// Other conditions…
});