【发布时间】:2016-11-12 04:13:53
【问题描述】:
在 mongoose 聚合查询中使用 $regex 时出现错误。我得到一个无效的运算符,错误号为 15999。请大家帮忙。
{ $match: { "_id": ObjectId(req.headers.token) } }, {
$project: {
inventory: {
$filter: {
input: '$inventory',
as: 'inventory',
cond: {$or:[{"$$inventory.item":new RegExp('^'+req.query.text+'$', "i")},{"$$inventory.sku":new RegExp('^'+req.query.text+'$', "i")}]}
}
},
_id: 0
}
}
【问题讨论】:
-
你可以将 req.query.text 视为字符串
-
如果可以使用 JS 代码,请尝试将其转义为
req.query.text.replace(/[-\/\\^$*+?.()|[\]{}]/g, '\\$&')。如果文本包含[或(或其他特殊的正则表达式元字符,这应该可以解决问题。 -
不确定是否可以在 $project stackoverflow.com/questions/29866336/… 中使用正则表达式
标签: regex node.js mongodb express mongoose