Nodejs Mongoose 获取属性值的结果数组
Posted
技术标签:
【中文标题】Nodejs Mongoose 获取属性值的结果数组【英文标题】:Nodejs Mongoose get result array of property values 【发布时间】:2018-01-19 20:38:19 【问题描述】:如何在没有对象结构的情况下获得一组属性值。这是我的架构
_id:
type: Schema.Types.ObjectId,
ref: "User"
,
services: [
_id:false,
service_category:
type: Schema.Types.ObjectId,
ref: "ServiceCategory"
,
sub_services :[
_id:false,
service :
type: Schema.Types.ObjectId,
ref: "Service"
]
]
这就是我要查询结果的方式
Vendor.find( '_id': req.user._id, 'services.service_category':req.body.category_id,'services.sub_services.service').exec(function (err, rtnobj)
if (err)
console.log(err);
return (err);
else
res.send(rtnobj);
)
但它给了我这个输出
[
"_id": "598b28271a0b551af8fbf849",
"services": [
"sub_services": [
"service": "service 1 _id"
,
"service": "service 2 _id"
]
]
]
但我需要以下格式的结果
[ "service 1 _id", "service 2 _id",......]
是否有任何标准方法可以做到这一点。或任何替代方法
谢谢
【问题讨论】:
Mongoose, Select a specific field with find的可能重复 不,这与这个问题不相似。谢谢 【参考方案1】:如果你想使用查询,那么你最好继续做你现在做的事情,然后映射结果:
Vendor.find( '_id': req.user._id, 'services.service_category':req.body.category_id,'services.sub_services.service').exec(function (err, rtnobj)
res.send(rtnobj.services.sub_services.map(each => each.service))
)
您也可以使用聚合框架来做类似的事情。但我认为以上是最惯用的。
【讨论】:
它工作,但必须做一些改变 res.send(rtnobj[0].services[0].sub_services.map(each => each.service));感谢您的支持以上是关于Nodejs Mongoose 获取属性值的结果数组的主要内容,如果未能解决你的问题,请参考以下文章
Nodejs mongoose根据对象属性选择嵌套数组中的对象
如何在 MongoDB 中对聚合查询结果进行分页并获得总文档数(Node.js + Mongoose)?