Nodejs Mongoose获取属性值的结果数组
我怎样才能得到一个没有对象结构的属性值的数组。 这是我的模式
_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",......]
有没有什么标准的方法来做到这一点。 或者任何其他方法
谢谢
如果你想使用查询,那么你可能只是继续做你现在做的事情,然后映射结果:
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)) })
你也可以使用聚合框架来做类似的事情。 但我认为上述将是最习惯的。