在前端,
<select ng-model="selected.year">
<option value=""></option>
<option value="2015">2015</option>
<option value="2014">2014</option>
</select>
<select ng-model="selected.year">
<option value=""></option>
<option value="2015">2015</option>
<option value="2014">2014</option>
</select>
<select ng-model="selected.month">
<option value=""></option>
<option value="Apr">Apr</option>
<option value="May">May</option>
</select>
$scope.params = {year: '2015', month: 'Apr', type: 'A'}
选择所有方框时效果很好,但我想让它变得灵活,不必选择所有内容,这意味着如果用户只选择年份和月份,它将返回所有类型&#39; ;
在服务器端,查询如下所示:
Collection.aggregate({ $match: { year: req.body.year, month: req.body.month, type: req.body.type}
}....etc)
问题是,如果未选择其中一个字段,则不返回任何内容。我如何要求MongoDB返回所有未选择的字段?
答案 0 :(得分:1)
您可以通过以编程方式构建$match
值来省略没有值的字段来执行此操作:
var match = {};
if (req.body.year) {
match.year = req.body.year;
}
if (req.body.month) {
match.month = req.body.month;
}
if (req.body.type) {
match.type = req.body.type;
}
Collection.aggregate({ $match: match}, ...);