如何根据找到的值在填充中使用其他匹配项?

时间:2019-01-19 22:17:20

标签: node.js express mongoose

我想基于记录的一个字段值在填充中使用不同的匹配条件。我曾尝试在find()中使用$ where,但在填充字段中找不到。

我还尝试在match中使用$ where函数,但是它不起作用。

我知道我可以在exec中过滤文档,但是在mongoose API中有什么好的方法吗?

collection1.find({}).populate([{
    path:"collection2"
}]).exec(function (err, docs) {
    res.send({data:docs})
})

collection1:
{
    option:1,
    array_id:5c34e9586c9fa209e623ce38
},
{
    option:2,
    array_id:5c34e9586c9fa209e623ce37
},
{
    option:3,
    array_id:5c34e9586c9fa209e623ce36
}


collection2:
{
    _id:5c34e9586c9fa209e623ce38,
    array:["a", "b", "c", "d"]
}

填充我的记录后

data:{
    option1,
    array_id:{
        _id:5c34e9586c9fa209e623ce38,
         array:["a", "b", "c", "d"]
    }
}

如果选项为1,则匹配collection2中的数组包含“ a”,如果选项为2,则匹配collection3中的数组包含“ d”,f选项为3,则选择此记录。

0 个答案:

没有答案