node.js - 如何返回列而不是数据行?
问题描述
如何使用节点、mongodb 按列检索数据,知道如何做吗?
现在我正在检索这样的数据,
schema.method("toJSON", function () {
const { _id, ...object } = this.toObject();
object.id = _id;
console.log('OBJECT ', object)
return object;
});
我现在得到的是,
[
{
"username": "2",
"heartrate": 150,
"bodytemperature": 110,
"bloodoxygen": 210,
"bloodpressure": 240,
"createdAt": "2021-10-02T18:11:09.559Z",
"updatedAt": "2021-10-02T18:11:09.559Z",
"__v": 0,
"id": "6158a0bddd4ee2fd9dffaa6b"
},
{
"username": "2",
"heartrate": 150,
"bodytemperature": 110,
"bloodoxygen": 210,
"bloodpressure": 240,
"createdAt": "2021-10-02T20:00:20.173Z",
"updatedAt": "2021-10-02T20:00:20.173Z",
"__v": 0,
"id": "6158ba54ba54444d2c69f0cc"
}
]
我想要的是这个
{
"username":[ "2", "2"],
"heartrate": [150, 150],
"bodytemperature": [110, 110],
"bloodoxygen": [210,210],
"bloodpressure": [240, 240]
}
谢谢
解决方案
您可以$group
将null
所有对象放在一起并$push
放入这样的数组中:
yourModel.aggregate([
{
"$group": {
"_id": null,
"username": {
"$push": "$username"
},
"heartrate": {
"$push": "$heartrate"
},
"bodytemperature": {
"$push": "$bodytemperature"
},
"bloodoxygen": {
"$push": "$bloodoxygen"
},
"bloodpressure": {
"$push": "$bloodpressure"
}
}
}
])
这里的例子
您也可以在聚合管道中添加一个额外的阶段以不在_id: null
这里输出示例。
结果是:
[
{
"bloodoxygen": [210,210],
"bloodpressure": [240,240],
"bodytemperature": [110,110],
"heartrate": [150,150],
"username": ["2","2"]
}
]
推荐阅读
- php - 如何在 WordPress 中获取特定域的 iframe url
- powerapps - MS PowerApps:无法在线将新记录保存到 SharePoint
- android - Android:BottomSheetDialog 未使用 ConstraintLayout 完全展开
- php - PHP - 如何有效地传递本地文件
- python - pip 编辑模式“未找到模块”
- keras - 如何在一个时期后显示最后使用的学习率
- java - 为什么在 Weka 中使用 libsvm 时会出现“NoClassDefFoundError:libsvm/svm_print_interface”错误?
- r - 基于非等时变量加入excel文件
- c# - AuthorizeRequestValidator:错误:客户端的授权类型无效:隐式
- json - 在 Swift 中遍历解码 JSON 的字典键