我有三个以上的表需要与MongoDB的Mongoose连接,但是每个表都有一个代码,可以在不同的位置。我给予你举个例子:
table1 - Code: "13421" (string)
table2 - Code: "42932-13421" (string)
table3 - Code: "()13421" (string)
因此,索引代码包含在“code”字段中,但它可以在不同的位置。我已经知道在MySQL中我可以用LIKE来处理它:
SELECT *
FROM table1
LEFT JOIN table2 ON table2.code LIKE %table1.code%
LEFT JOIN table3 ON table3.code LIKE %table1.code%
但是对于Mongoose,我如何专门在该字段上执行查找?
我认为类似的东西应该起作用:
table1.aggregate(
{
$lookup: {
from: 'table2',
pipeline: [
{
$match: {
$expr: {
$regexMatch: {
input: '$table2.code',
regex: { $regex: '.*$$code.*', $options: 'i' }
}
}
}
}
],
as: 'table2'
}
},
这是MongoDB的错误:
Error: MongoServerError: An object representing an expression must have exactly one field: { $regex: ".*code.*", $options: "i" }
1条答案
按热度按时间46qrfjad1#
regex expect pattern and not expression,尝试将代码改为: