Arrays Mongoose-通过其ID填充单个文档

Arrays Mongoose-通过其ID填充单个文档,arrays,mongodb,mongoose,Arrays,Mongodb,Mongoose,我有一个名为category的模型,它有两个字段 类别名称和书籍 books字段是书籍ID的数组((参考文献)) 我想在调用要填充的.populate()时指定一个id,而不是在MongoDB+Mongoose中填充整个数组 我的代码: categories.get('/bookId', async (req, res) => { const bookId = req.params.bookId; try { const categories = await

我有一个名为category的模型,它有两个字段 类别名称书籍

books字段是书籍ID的数组((参考文献))

我想在调用要填充的.populate()时指定一个id,而不是在MongoDB+Mongoose中填充整个数组

我的代码:

categories.get('/bookId', async (req, res) => {
    const bookId = req.params.bookId;
    try {
        const categories = await Category.find().populate('books') 
        if (!categories || categories.length == 0) return res.status(404).send("No categories found");
        res.status(200).send(categories);
    } catch (error) {
        res.send(error.message);
    }
});

如果您只想通过其ID填充特定书籍,则可以使用以下方法:

categories.get('/bookId', async (req, res) => {
    const bookId = req.params.bookId;
    try {
        const categories = await Category.find().populate({
            path: 'books', 
            match: { _id: bookId }
        }) 
        if (!categories || categories.length == 0) return res.status(404).send("No categories found");
        res.status(200).send(categories);
    } catch (error) {
        res.send(error.message);
    }
});

请提供迄今为止您尝试过的代码。谢谢。代码填充整个数组,我们想使用param(bookId)从books数组中填充一本特定的书,而不是填充整个arraycategories。get('/bookId',async(req,res)=>{const bookId=req.params.bookId;try{const categories=wait Category.find().populate('books'))如果(!categories | | categories.length==0)返回res.status(404).send(“未找到类别”);res.status(200.send(categories);}catch(error){res.send(error.message);});