【问题标题】:Find String in subDoc MongoDB在 subDoc MongoDB 中查找字符串
【发布时间】:2018-03-07 02:00:59
【问题描述】:

各位朋友,我正在尝试在我的 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); 
    }); 
});  

【问题讨论】:

  • 您也可以发布您的架构吗?
  • 我看不出“items.category”有什么问题。你确定要达到这个终点吗?
  • 你能提供一个存储在 db 中的结构样本吗?

标签: node.js mongodb mongoose mongodb-query


【解决方案1】:

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

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'
        });
    });

});

【讨论】:

  • 我解决了这个问题:router.get('/:_categoryName', (req, res, next) => { Malgezot.findOne({ 'items.category': req.params._categoryName}, (err, malgezot) => { if(err) return res.render('body/category', {info: ''}); 让 results = malgezot.items.filter((m)=>m.category == = req.params._categoryName)[0]; return res.render('body/category', {items: results, category: req.params._categoryName}); }); });但是我使用 HBS express 而当我制作 {{#each}} 时,我得到 8 个空对象结果只有 2 个
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2013-08-13
  • 1970-01-01
  • 2016-01-23
  • 2011-01-11
  • 2016-08-05
相关资源
最近更新 更多