我正在使用聚合和匹配来从数据库中获取数据。这是一个简化版本:
Palette.aggregate([
{"$match": {
type: paletteType,
numberOfColors: {[colorNumberFilterTypeOperator]: colorNumber},
tags: paletteTag
}]);
标签是一个数组。
我想这样做,如果paletteTag是空白的,它将返回带有标签字段中任何内容的文档,但是现在它返回none,因为它试图匹配不存在的空白标记。
我可以做一个if语句来检查paletteTag的值,如果它是空白的,将它设置为匹配所有标签的东西,但我不确定它会是什么。像/.*/g这样的东西可以返回任何带标签的东西,但是如果标签数组是空白的(等于[]),那么就不会返回它。我想要返回任何内容,无论它是否在该字段中都有标签。
答案 0 :(得分:2)
var match = {
type: paletteType,
numberOfColors: {[colorNumberFilterTypeOperator]: colorNumber}
}
paletteTag? match.tags = paletteTag : null; //add tag criteria only if palletTag exists
Palette.aggregate(
[{
"$match": match
}]);