我正在尝试使用另一个查询中的一个查询结果来根据条件获取详细信息。
MongoDB:
[err, deviceTypeData]= await to(DeviceTypes.findOne({"_id":payload.deviceType}))
[err, data] = await to(Template.aggregate([
{
$match:{
_id: new mongoose.Types.ObjectId(payload.templateId)
}
},{
$project:{
deviceSettings:{
$filter:{
input:"$deviceSettings",
as:"deviceSettings",
cond:{
$or: [
{
$eq:["$$deviceSettings.deviceType", new mongoose.Types.ObjectId(payload.deviceType)]
},{
if:{$eq:[deviceTypeData.enableGPS, true]},
then: {$eq:["$$deviceSettings.name", "deviceId"]},
else: { $eq:["$$deviceSettings.name", "deviceId"],$eq:["$$deviceSettings.name", "latitude"],
$eq:["$$deviceSettings.name", "longitude"]}
}
]
}
}
}
}
}
]));
在上面的查询中,我试图在第二个查询中使用第一个查询结果 deviceTypeData.enableGPS
值 if 条件但它不起作用。