Mongodb 如何使用节点红色REST-API按数字过滤
我用节点RED为我的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-值都是数字而不是字符串 我是否可以将
:/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;