[英]Conditionally apply and condition in MongoDB
我試圖根據傳遞的參數有條件地獲取數據。
參數是“房間”和“區域”
如果房間不等於“任何”,我想在房間的過濾器中添加條件。
如果面積不等於“全部”,我想在面積過濾器中添加條件。
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 });
});
};
但是,這種情況不起作用,並且所有數據都返回了沒有任何過濾器的所有數據。
你在這里使用錯誤的語法。 這可以使用簡單的 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)
})
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.