Mongodb 如何使用节点红色REST-API按数字过滤

Mongodb 如何使用节点红色REST-API按数字过滤,mongodb,rest,node-red,Mongodb,Rest,Node Red,我用节点RED为我的MongoDB创建了一个小型REST-API 这很好::/rest/demo显示所有条目 我甚至可以过滤结果:添加?userName=demo只显示{userName:“demo”}中的条目 在我的数据库中,我有一些数值。类似于{weight:10}。请注意,这不是{weight:“10”} 现在我只想要{weight:10}中的条目。但是当我附加?weight=10时,传递的参数将10转换为“10”。它没有命中,因为我所有的weight-值都是数字而不是字符串 我是否可以将

我用节点RED为我的MongoDB创建了一个小型REST-API

这很好:
:/rest/demo
显示所有条目

我甚至可以过滤结果:添加
?userName=demo
只显示
{userName:“demo”}
中的条目

在我的数据库中,我有一些数值。类似于
{weight:10}
。请注意,这不是
{weight:“10”}

现在我只想要
{weight:10}
中的条目。但是当我附加
?weight=10
时,传递的参数将
10
转换为
“10”
。它没有命中,因为我所有的
weight
-值都是数字而不是字符串

我是否可以将附录更改为按重量过滤?还是我必须完善我的REST逻辑

//编辑: 这就是我的流程的样子:

[{“id”:“c4a27b53.59303”,“type”:“mongodb in”,“z”:“99225255.0516b8”,“mongodb”:“7e071505.7198bc”,“name”:“collection”:“demo”,“operation”:“find”,“x”:660,“y”:580,“wires”:[“852d2853.264698”],{“id”:“af5a916a.08366”,“type”:“function”,“z”:“99225255.0516b8”,“name”:“parseQuery”,“func”:“msg.req.query”:“msg=(msg.req.query);\n\nmsg.limit=100;\nmsg.skip=0;\n\n返回消息;“,”输出“:1,“noerr”:0,“x”:330,“y”:580,“wires”:[[“c4a27b53.59303”]},{“id”:“6b0b1b4b.eb8b2c”,“type”:“http in”,“z”:“99225255.0516b8”,“name”:“url”:“/rest/demo”,“method”:“get”,“swaggerDoc”:“x”:120,“y”:580,“wires”:[“af5a91366”],“http”:“id”;“http:“response”:“2853”;“http”:”:“http:”“99225255.0516b8”,“名称”:“x”:950,“y”:580,“导线”:[]},{“id”:“7e071505.7198bc”,“类型”:“mongodb”,“z”:“主机名”:“192.168.100.166”,“端口”:“27017”,“db”:“培训”,“名称”:“Debiantaining”}

//编辑2: 更新

我用更多的服务器逻辑解决了这个问题:

if (msg.payload.hasOwnProperty('weight')) {
   msg.payload.weight = parseInt(msg.payload.weight);
}
我又添加了两个案例来搜索“大于”和“小于”:


到目前为止,这一切都很好。

好的,在查看了将HTTP查询转换为Mongo查询的功能节点之后,我认为对于Mongo中的任意对象,没有一种很好的方法可以动态执行此操作

所有HTTP查询参数都将是字符串,因此如果您知道文档中的某个特定字段是一个数字,则可以仅转换该字段

msg.payload = (msg.req.query);

if (msg.payload.hasOwnProperty('weight')) {
   msg.payload.weight = parseInt(msg.payload.weight)
}

msg.limit = 100;
msg.skip = 0;

return msg;

您可能需要在此处为我们提供有关您的流程的更多信息。屏幕截图或导出的流程,以便我们可以查看您已连接到的内容。我刚刚编辑了问题并添加了流程。我还有一个问题,是否有方法过滤大于的内容?类似于
查找({$gt:30})
?以新问题的形式提出新问题
msg.payload = (msg.req.query);

if (msg.payload.hasOwnProperty('weight')) {
   msg.payload.weight = parseInt(msg.payload.weight)
}

msg.limit = 100;
msg.skip = 0;

return msg;