如何使用search_key
变量代替静态值BRO作为字段值
if(search_key!=''){
dbo.collection("assets").aggregate([
{
"$match": { $and: [ { status: 1 }, { $or: [ { maker_name : /^.*BRO.*$/i }, { serial_number : /^.*BRO.*$/i } ] } ] }
},
{
$lookup:
{
from: 'asset_type',
localField: 'asset_type',
foreignField: 'asset_type_id',
as: 'asset_type_details'
}
}
]).sort({_id:-1}).toArray(function(err, result) {
if (err) throw err;
res.status(200).json({'return_data': result });
db.close();
});
}
答案 0 :(得分:0)
我们需要将字符串传递给函数。因此我们可以简单地通过传递查询字符串来更改它。
9.4.13.v20181111
答案 1 :(得分:0)
尝试这样:
if(search_key!=''){
let query_string = "/^.*" + search_key + ".*$/i" // we are creating the query string here
dbo.collection("assets").aggregate([
{
"$match": { $and: [ { status: 1 }, { $or: [ { maker_name : query_string }, { serial_number : query_string } ] } ] }
},
{
$lookup:
{
from: 'asset_type',
localField: 'asset_type',
foreignField: 'asset_type_id',
as: 'asset_type_details'
}
}
]).sort({_id:-1}).toArray(function(err, result) {
if (err) throw err;
res.status(200).json({'return_data': result });
db.close();
});
}
答案 2 :(得分:0)
尝试这种方式
{ serial_number: { $regex: `${search_key}.*`, $options: 'i' } }
也将同样的东西用于maker_name
。
这对我有用。