我正在查询我的API,并且我将一组站作为参数传递
http://本地主机:3790 / api / getSensorIdstation / 191,1123
我得到的答案如下:
{
"Station_types":[
{
"_id":"5cc85899a0160f16c50f4199",
"marca":"Hortisis",
"modelo":"Estacion",
"fabricante":"Hortisis",
"id_station":[
"191",
"457",
"459",
"463",
"465",
"426",
"424"
],
"sensor_type":{
"name":"2",
"type":"clima",
"place":"interior",
"img":"assets/img/temp.png",
"name_comun":"Temp. Ambiente",
"medida":"ºC",
"interfaz":"greenhouse"
}
},
{
"_id":"5cc85899a0160f16c50f4199",
"marca":"Hortisis",
"modelo":"Estacion",
"fabricante":"Hortisis",
"id_station":[
"191",
"457",
"459",
"463",
"465",
"426",
"424"
],
"sensor_type":{
"name":"3",
"type":"clima",
"place":"interior",
"img":"assets/img/hum.png",
"name_comun":"Hum. Relativa",
"medida":"%",
"interfaz":""
}
},
{
"_id":"5cebaa26c6b02a54c6a3f782",
"marca":"Sigfox 8DF004 CO2 Sensirion (L1 214)",
"modelo":"Sigfox 8DF004 CO2 Sensirion (L1 214)",
"fabricante":"Sigfox 8DF004 CO2 Sensirion (L1 214)",
"id_station":[
"1123"
],
"sensor_type":{
"name":"3",
"type":"clima",
"place":"interior",
"img":"assets/img/hum.png",
"name_comun":"Hum. Relativa",
"medida":"%",
"interfaz":""
}
},
{
"_id":"5cebaa26c6b02a54c6a3f782",
"marca":"Sigfox 8DF004 CO2 Sensirion (L1 214)",
"modelo":"Sigfox 8DF004 CO2 Sensirion (L1 214)",
"fabricante":"Sigfox 8DF004 CO2 Sensirion (L1 214)",
"id_station":[
"1123"
],
"sensor_type":{
"name":"43",
"type":"clima",
"place":"interior",
"img":"assets/img/humidity.png",
"name_comun":"Def. vapor de presión",
"medida":"kPa",
"interfaz":""
}
}
]
}
在这种情况下,我只需要在191和1123中出现的id_station上正在查询的ID,而不需要其余的ID。
我正在测试过滤器,但无法正常工作。
这是我的代码:
function getSensorIdstation(req, res) {
var array = req.params.id_station;
var arr = array.split(',');
Station_types.aggregate([
{ "$match": { "id_station": { "$in": arr } } },
{ "$unwind": "$sensor_type" },
],
(err, Station_types) => {
if (err) return res.status(500).send({ message: 'Error al realizar la peticion' })
if (!Station_types) return res.status(404).send({ message: 'Error el usuario no existe' })
res.status(200).send({ Station_types })
})
}
结果应为:
{
"Station_types":[
{
"_id":"5cc85899a0160f16c50f4199",
"marca":"Hortisis",
"modelo":"Estacion",
"fabricante":"Hortisis",
"id_station":[
"191"
],
"sensor_type":{
"name":"2",
"type":"clima",
"place":"interior",
"img":"assets/img/temp.png",
"name_comun":"Temp. Ambiente",
"medida":"ºC",
"interfaz":"greenhouse"
}
},
{
"_id":"5cc85899a0160f16c50f4199",
"marca":"Hortisis",
"modelo":"Estacion",
"fabricante":"Hortisis",
"id_station":[
"191"
],
"sensor_type":{
"name":"3",
"type":"clima",
"place":"interior",
"img":"assets/img/hum.png",
"name_comun":"Hum. Relativa",
"medida":"%",
"interfaz":""
}
},
{
"_id":"5cebaa26c6b02a54c6a3f782",
"marca":"Sigfox 8DF004 CO2 Sensirion (L1 214)",
"modelo":"Sigfox 8DF004 CO2 Sensirion (L1 214)",
"fabricante":"Sigfox 8DF004 CO2 Sensirion (L1 214)",
"id_station":[
"1123"
],
"sensor_type":{
"name":"3",
"type":"clima",
"place":"interior",
"img":"assets/img/hum.png",
"name_comun":"Hum. Relativa",
"medida":"%",
"interfaz":""
}
},
{
"_id":"5cebaa26c6b02a54c6a3f782",
"marca":"Sigfox 8DF004 CO2 Sensirion (L1 214)",
"modelo":"Sigfox 8DF004 CO2 Sensirion (L1 214)",
"fabricante":"Sigfox 8DF004 CO2 Sensirion (L1 214)",
"id_station":[
"1123"
],
"sensor_type":{
"name":"43",
"type":"clima",
"place":"interior",
"img":"assets/img/humidity.png",
"name_comun":"Def. vapor de presión",
"medida":"kPa",
"interfaz":""
}
}
]
}
编辑
添加过滤器代码: 但它不返回其余字段,仅返回id_station
Station_types.aggregate([
{ "$match": { "id_station": { "$in": arr } } },
{ "$unwind": "$sensor_type" },
{
$project: {
sensor_type: {
$filter: {
input: '$id_station',
as: 'shape',
cond: { $in: ['$$shape', arr] }
}
},
_id: 0
}
}
],
答案 0 :(得分:0)
最后,经过几次测试,我找到了解决方案,在项目中添加了一个过滤器,并添加了其余字段。
function getSensorIdstation(req, res) {
var array = req.params.id_station;
console.log(array);
var arr = array.split(',');
console.log(arr);
Station_types.aggregate([
{ "$match": { "id_station": { "$in": arr } } },
{ "$unwind": "$sensor_type" },
{
$project: {
_id: 0,
id_station: {
$filter: {
input: '$id_station',
as: 'shape',
cond: { $in: ['$$shape', arr] }
}
},
marca: "$marca",
modelo: "$modelo",
fabricante: "$fabricante",
sensor_type: {
name: "$sensor_type.name",
type: "$sensor_type.type",
place: "$sensor_type.place",
img: "$sensor_type.img",
name_comun: "$sensor_type.name_comun",
medida: "$sensor_type.medida",
interfaz: "$sensor_type.interfaz"
}
}
}
],
(err, Station_types) => {
if (err) return res.status(500).send({ message: 'Error al realizar la peticion' })
if (!Station_types) return res.status(404).send({ message: 'Error el usuario no existe' })
/*SensorRecuperado.sort(function(a, b) {
return b.name_comun.localeCompare(a.name_comun);
})*/
res.status(200).send({ Station_types })
})
}
希望有帮助。