在subDoc MongoDB中查找字符串

问题描述 投票:0回答:1

嗨朋友,我想在我的subDoc类别字符串匹配中找到

这是代码:

router.get('/:_categoryName', (req, res, next) => {
    Malgezot.findOne({ 'items.category': req.params._categoryName  }, (err, malgezot) => {
        if(err) return res.render('body/category', {info: ''});
        console.log(malgezot);
      });
});

但结果是所有的项目!

我也尝试过:

router.get('/:_categoryName', (req, res, next) => { 
    Malgezot.find({'items': { 'category': req.params.categoryName }}, (err, malgezot) => { 
        if(err) return res.render('body/category', {info: ''}); 
        console.log(malgezot); 
    }); 
});  
node.js mongodb mongoose mongodb-query
1个回答
0
投票

如果您的数据是对象形式,那么查询应该是:

router.get('/:_categoryName', (req, res) => {
    const { _categoryName } = req.params;

    Malgezot.findOne({
        'items.category': _categoryName
    }).then((data) => {
        if (data) {
            res.status(200).json(data)
        }
    }).catch((err) => {
        res.status(500).json({
            message: 'Internal server error'
        });
    });

});

或者,如果您的数据是数组形式,那么您的查询应该是:

    router.get('/:_categoryName', (req, res) => {
    const { _categoryName } = req.params;

    Malgezot.findOne({
        item : { $in : [{ category: _categoryName  }] }
    }).then((data) => {
        if (data) {
            res.status(200).json(data)
        }
    }).catch((err) => {
        res.status(500).json({
            message: 'Internal server error'
        });
    });

});
© www.soinside.com 2019 - 2024. All rights reserved.