我正在使用node js和MongoDB开发后端。 我已经开发了GET和POST请求。我在特定字段上使用了GET请求:
router.get('/machine/:brand', function(req,res){
Machine.find({Brand:req.params.brand}).distinct('Version', (err, machines) => {
if (err) {
console.log(err);
return res.status(400).send({ status: 'ko', data: {msg: err.message }});
console.log(err);
}
res.status(200).send({status: 'ok', data: {msg: 'Brands available', brand:machines}});
});
});
此请求运行良好,并为我提供了特定品牌机器的所有版本的列表。 现在,我还需要使用版本检索机器表的其他字段模型。 有可能与2个字段一起使用吗? 如何在唯一的GET请求中检索2字段的不同?
答案 0 :(得分:1)
使用一个MongoDB查询无法轻松获得两个单独字段的不同值。使用聚合框架将是可能的。但是,该代码相对较讨厌,您也不会利用字段上的索引。因此,您可以执行以下操作:
router.get('/machine/:brand', function(req,res) {
Machine.find({Brand:req.params.brand}).distinct('Version', (err, machines) => {
if (err) {
console.log(err);
return res.status(400).send({ status: 'ko', data: {msg: err.message }});
}
Machine.find({Brand:req.params.brand}).distinct('SomeOtherField', (err, someOtherFieldDistinctValues) => {
if (err) {
console.log(err);
return res.status(400).send({ status: 'ko', data: {msg: err.message }});
}
res.status(200).send({status: 'ok', data: [
{msg: 'Brands available', brand: machines},
{msg: 'SomeOtherField available', someOtherField: someOtherFieldDistinctValues}
]});
});
});
});
这样,您至少只有一个HTTP请求,它将两次调用MongoDB。