mongodb查询以一种以一种JSON格式发送所有字段的响应
我必须以一种JSON格式发送响应,其中三个品牌名称以及三个制造商名称。 我粘贴了最后一个示例。
这是我的代码 -
getFilterData: function (req, res, next) {
console.log('Itemfilterlist getAll ');
let filterlist = []
let agg = [ {'$match': {'generic_name': req.body.generic_name, 'form_name': req.body.form_name, 'dose_size': req.body.dose_size}},
{'$sort': {'mrp': 1}},
{'$limit': 3},
{'$group': {_id:'$id', "generic_name": {$first:"$generic_name"},
"form_name": {$first:"$form_name"},
"dose_size": {$first:"$dose_size"},
"subcategory_name": {$first:"$subcategory_name"},
brand1: {$push: { "brand_name": "$brand_name", "manufacturer_name": "$manufacturer_name"}}}}
]
let i = 0;
MasterModel.aggregate(agg, function (err, arrList) {
if (err) {
next(err);
}
else {
for (let h of arrList) {
h.id = ++i
filterlist.push(h);
}
res.json({ filterList: filterlist })
}
});
},
我在组查询的帮助下将组聚合与推动累加器一起显示数据,但我得到了此JSON数据响应: -
"filterList": [
{
"_id": null,
"generic_name": "Ademetionine",
"form_name": "Tablets-MD",
"dose_size": "400MG",
"subcategory_name": "Others",
"brand1": [
{
"brand_name": "CARTISURE 400 MG TAB",
"manufacturer_name": "Zoic Lifesciences"
},
{
"brand_name": "ADENORICH 400 MG TAB",
"manufacturer_name": "Future Pharma Pvt Ltd"
},
{
"brand_name": "ENSAME 400 TAB",
"manufacturer_name": "ICARUS HEALTHCARE"
}
],
"id": 1
}
]
但是我希望我的JSON格式像这样: -
{
id: 1,
molecule: 'Heparin',
form: 'Ointments',
strength: '50IU',
sub_category: 'CARDIO VASCULAR SYSTEM',
brand_name_1: 'HEPTRAL(Abbott)',
brand_name_2: 'HYSAM(Alkem)',
brand_name_3: 'THROMBOMARK(Mankind)',
}
I have to send the response in one JSON format in which three brand names along with three manufacturer names are there.
I paste a sample example in last.
This is my code -
getFilterData: function (req, res, next) {
console.log('Itemfilterlist getAll ');
let filterlist = []
let agg = [ {'$match': {'generic_name': req.body.generic_name, 'form_name': req.body.form_name, 'dose_size': req.body.dose_size}},
{'$sort': {'mrp': 1}},
{'$limit': 3},
{'$group': {_id:'$id', "generic_name": {$first:"$generic_name"},
"form_name": {$first:"$form_name"},
"dose_size": {$first:"$dose_size"},
"subcategory_name": {$first:"$subcategory_name"},
brand1: {$push: { "brand_name": "$brand_name", "manufacturer_name": "$manufacturer_name"}}}}
]
let i = 0;
MasterModel.aggregate(agg, function (err, arrList) {
if (err) {
next(err);
}
else {
for (let h of arrList) {
h.id = ++i
filterlist.push(h);
}
res.json({ filterList: filterlist })
}
});
},
I use the group aggregation with push accumulator to show the data, With the help of a group query but I get this JSON data response:-
"filterList": [
{
"_id": null,
"generic_name": "Ademetionine",
"form_name": "Tablets-MD",
"dose_size": "400MG",
"subcategory_name": "Others",
"brand1": [
{
"brand_name": "CARTISURE 400 MG TAB",
"manufacturer_name": "Zoic Lifesciences"
},
{
"brand_name": "ADENORICH 400 MG TAB",
"manufacturer_name": "Future Pharma Pvt Ltd"
},
{
"brand_name": "ENSAME 400 TAB",
"manufacturer_name": "ICARUS HEALTHCARE"
}
],
"id": 1
}
]
But I want my JSON format to be like this:-
{
id: 1,
molecule: 'Heparin',
form: 'Ointments',
strength: '50IU',
sub_category: 'CARDIO VASCULAR SYSTEM',
brand_name_1: 'HEPTRAL(Abbott)',
brand_name_2: 'HYSAM(Alkem)',
brand_name_3: 'THROMBOMARK(Mankind)',
}
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
您可以在聚合管道中添加
$投影
步骤。类似:在
You can add a
$projection
step to your aggregation pipeline. Something like:See how it works on the playground example