猫鼬-find()-基于变量

时间:2019-03-23 20:17:56

标签: mongoose

我正在尝试根据传递给我的快递的参数查找记录。

我要查找集合中的所有文档,如果存在参数,我想根据该参数查找文档。

我知道我所做的甚至都不是正确的,但它确实有效。 我只想知道正确的方法是什么。

我所拥有的:

const offset = 0;
const limit = 10;
const itemName = req.query.itemName;

let searchQuery = '';
if(itemName && itemName !== 'undefined' && itemName !== ''){
    searchQuery = { item: { "$regex": String(itemName), "$options": "i" }}
} else {
    searchQuery = { userRef: String(id) };
};

return MyModel
.find(searchQuery)
.limit(limit)
.skip(offset)
.then(result => {
    res.status(200).json({ result: result })
} 

编辑: 如果我想添加更多的搜索查询,并且可能合并多个查询,我会遇到什么问题。 我做了一些进一步的挖掘,发现可能应该汇总结果。

1 个答案:

答案 0 :(得分:0)

好的,所以我找到了解决方法。

我不得不使用猫鼬$and$or运算符。

我的最终代码如下:

MyModel.find({
        $and: [
            { ref: mongoose.Types.ObjectId(id) },
            { $and: [
                { query1: { $regex: String(query1), $options: "i" }  },
                { query2: { $regex: String(query2), $options: "i" }  },
                { query3: { $regex: String(query3), $options: "i" }  }
            ]}
        ]
    })

因此,现在在调用API时将搜索所有字段