“message”: “MongoServerError:未知的顶级运算符:$${match}price$${match}

"message": "MongoServerError: unknown top level operator: $${match}price$${match}

提问人:Gregory 提问时间:11/16/2023 更新时间:11/16/2023 访问量:8

问:

“message”: “MongoServerError:未知顶级运算符:$${match}price$${match}。如果您的字段名称以“$”符号开头,请考虑使用 $getField 或 $setField。

我打算使用 Mongoose 从 MongoDB 数据库中获取所有产品,并能够根据请求中的查询参数过滤结果。

这一行 ,应该将 、 、 和 in 的实例替换为它们的 MongoDB 对应项。 queryStr = queryStr.replace(/\b(gte|gt|lte|lt|)\b/g, (match) => '$${match}');gtegtlteltqueryStr

但是,似乎存在一个问题,因为我在尝试使用MongoDB的查询运算符时不断收到上面的错误消息。

查询字符串

评论


答:

0赞 Gregory 11/16/2023 #1

一个朋友刚刚给我发了一篇文章,上面写着,javaScript模板文字用反引号(')表示,而不是单引号或双引号。因此,正确的行应该是:

queryStr = queryStr.replace(/\b(gte|gt|lte|lt)\b/g, (match) => $${匹配});

不是这个queryStr = queryStr.replace(/\b(gte|gt|lte|lt|)\b/g, (match) => '$${match}');

这将正确地将 queryStr 中的比较运算符替换为它们的 MongoDB 对应符。谢谢大家。