【发布时间】:2017-10-05 13:35:00
【问题描述】:
这是我的文档结构:
{
"_id": "590dc8b17e52f139648b9b94",
"parent": [
{
"_id": "590dc8b17e52f139648b9b95",
"child": [
{
"_id": "590dc8b17e52f139648b9b8f"
},
{
"_id": "590dc8b17e52f139648b9b90"
}
]
},
{
"_id": "590dc8c57e52f139648b9b9b",
"child": [
{
"_id": "590dc8c57e52f139648b9b96"
}
]
}
]}
我正在尝试仅返回有关我正在寻找的嵌套对象及其 _id 的信息。
router.get('/child/:id', (req, res) => {
Project.findOne({ 'parent.child._id': req.params.id },
(err, results) => {
if (err)
res.status(500).send(err);
res.status(200).json(results.parent[0].child.id(req.params.id));
}
)});
问题在于 results 包含可能包含多个 parent 实例的整个文档 所以很明显,我的代码只有在已知的 child _id 位于第一个父级时才有效。
我该如何解决? 非常感谢
显然,展开和匹配解决方案很好,但对于 mongoose,您需要明确说明 id 是 ObjectId 类型。
{$match:
{ "parent.child._id": new mongoose.Types.ObjectId(id) }
}
【问题讨论】:
-
尝试使用elemMatch
标签: node.js mongodb express mongoose