首页 > 解决方案 > child 的 child 里面的 where 子句

问题描述

我想要的是:

我希望find()所有文件where()中的一个子元素都有一个具有特定条件的子元素。

我有的:

router.route('/path/:id').get((req, res) => {
    Test.find({})
    .populate({path: 'child1', select: 'data child2', populate: {path: 'child2', select: '_id name'}})
    .where('_id')
        .in('child1')
        .in('child2')
        .equals(req.params.id)
    .exec((err, aval) => {
        if (err)
            console.log(err);
        else{
            console.log(aval);  
        }  
    });
});

标签: node.jsmongodbmongoose

解决方案


您可以matchpopulate函数内部使用

Test.find({})
  .populate({
    "path": "child1",
    "match": { "_id": req.params.id },
    "select": "data child2",
    "populate": {
      "path": "child2",
      "match": { "_id": req.params.id },
      "select": "_id name"
    }
  })
  .exec((err, aval) => {
    if (err)
      console.log(err)
    else{
      console.log(aval); 
    }  
  })

推荐阅读