我正在尝试根据传递给我的快递的参数查找记录。
我要查找集合中的所有文档,如果存在参数,我想根据该参数查找文档。
我知道我所做的甚至都不是正确的,但它确实有效。 我只想知道正确的方法是什么。
我所拥有的:
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 })
}
编辑: 如果我想添加更多的搜索查询,并且可能合并多个查询,我会遇到什么问题。 我做了一些进一步的挖掘,发现可能应该汇总结果。
答案 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时将搜索所有字段