這是我的文檔結構:貓鼬通過嵌套的對象ID找到返回整個文檔
{
"_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));
}
)});
問題是結果包含可能含有父 的多個實例,所以,很顯然我的代碼只能將整個文檔,如果已知孩子 _id它在第一個父。
我該如何解決? 非常感謝
所以顯然解開和匹配的解決方案是好的,但對於貓鼬,你需要明確地說,id是一個ObjectId類型。
{$match:
{ "parent.child._id": new mongoose.Types.ObjectId(id) }
}
嘗試使用[elemMatch(https://docs.mongodb.com/manual/reference/operator/projection/elemMatch/) – gaganshera