如果输入为空,MongoDB会匹配所有文档

时间:2017-03-30 18:58:09

标签: node.js mongodb

我正在使用聚合和匹配来从数据库中获取数据。这是一个简化版本:

Palette.aggregate([
    {"$match": { 
      type: paletteType, 
      numberOfColors: {[colorNumberFilterTypeOperator]: colorNumber},
      tags: paletteTag 
    }]);

标签是一个数组。

我想这样做,如果paletteTag是空白的,它将返回带有标签字段中任何内容的文档,但是现在它返回none,因为它试图匹配不存在的空白标记。

我可以做一个if语句来检查paletteTag的值,如果它是空白的,将它设置为匹配所有标签的东西,但我不确定它会是什么。像/.*/g这样的东西可以返回任何带标签的东西,但是如果标签数组是空白的(等于[]),那么就不会返回它。我想要返回任何内容,无论它是否在该字段中都有标签。

1 个答案:

答案 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
  }]);