小编Gia*_*ini的帖子

猫鼬通过嵌套对象 ID 查找返回整个文档

这是我的文档结构:

{
"_id": "590dc8b17e52f139648b9b94",
"parent": [
    {
        "_id": "590dc8b17e52f139648b9b95",
        "child": [
            {
                "_id": "590dc8b17e52f139648b9b8f"
            },
            {
                "_id": "590dc8b17e52f139648b9b90"
            }
        ]
    },
    {
        "_id": "590dc8c57e52f139648b9b9b",
        "child": [
            {
                "_id": "590dc8c57e52f139648b9b96"
            }
        ]
    }
]}
Run Code Online (Sandbox Code Playgroud)

我试图只返回有关我正在寻找的嵌套对象的 _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));

            }
    )});
Run Code Online (Sandbox Code Playgroud)

问题是结果包含整个文档,其中可能包含父的多个实例 所以显然我的代码只有在已知_id 位于第一个父中时才有效。

我该如何解决?非常感谢

所以显然展开和匹配解决方案是好的,但对于猫鼬,您需要明确说明 id 是 ObjectId 类型。

 {$match:
{ "parent.child._id": new mongoose.Types.ObjectId(id) }
            }
Run Code Online (Sandbox Code Playgroud)

在这里找到了

mongoose mongodb node.js express

4
推荐指数
1
解决办法
6730
查看次数

标签 统计

express ×1

mongodb ×1

mongoose ×1

node.js ×1