在MongoDB中有条件地应用和条件

时间:2019-03-28 14:53:10

标签: node.js mongodb

我试图根据传递的参数有条件地获取数据。

参数是“房间”和“区域”

  

如果房间不等于“ any”,我想在过滤器中添加条件   房间。
  如果面积不等于“全部”,我想在过滤器中添加条件   面积。

exports.get_property_search = function (req, res) {
    var filter = [];
    if (req.params.area != "all")
        filter.push({ "area": req.params.area });
    if (req.params.room != "any")
        filter.push({ "roomQty": req.params.room });

    AddProperty.find({
        $expr:
        {
            $cond:
            {
                if: filter != [],
                then: {
                    $and: filter
                },
                else: {

                }
            }
        }
    }, function (err, addProperty) {
        if (err)
            res.send({ code: '500', message: err });
        res.send({ code: '200', data: addProperty });
    });
};

但是,此条件不起作用,并且所有返回的所有数据都没有任何过滤器。

1 个答案:

答案 0 :(得分:1)

您在这里使用错误的语法。可以使用简单的javascript代码而不是使用聚合运算符来完成此操作。

let filter = {}
  if (req.params.area !== "all") {
    filter.area = req.params.area
  }
  if (req.params.room !== "any") {
    filter.roomQty = req.params.room
  }

  AddProperty.find(filter).then((data) => {
    console.log(data)
  })