我试图返回一个特定的集合,但是,我想过滤集合中的一个数组。我不确定这是否可能。在下面的例子中,我试图用_id: 7ARk3dc2JA8g5pamA返回集合,并过滤掉"candidateUserId": "2"的数组对象。我是在一个Meteorjs应用程序中这样做的。
例如:` `Collection‘
{
"_id": "7ARk3dc2JA8g5pamA",
"jobTitle": "Developer",
"candidateApplication": [
{
"candidateUserId": "1",
"applied": true
},
{
"candidateUserId": "2",
"applied": false
}
]
}路径:Publish command
return Jobs.find({ _id: 7ARk3dc2JA8g5pamA }, {
$filter: {
input: candidateApplication,
cond: { candidateUserId: { $eq: 1 } }
}
});发布于 2017-10-18 10:07:38
Jobs.find({ _id: 7ARk3dc2JA8g5pamA }, { candidateApplication: { $elemMatch: { candidateUserId: 2 } } }这应该只返回包含_id和candidateUserId数组的文档,但是该数组现在只包含您想要的对象。
{ "_id" : 7ARk3dc2JA8g5pamA, "candidateApplication" : [ { "candidateUserId": 2, "applied": false } ] } 然后,您可以使用candidateApplication.candidateUserId和candidateApplication.applied获取数据
正如上面注释中所提到的,如果有更多相同candidateUserId的实例,则只会返回第一个实例。
https://stackoverflow.com/questions/46781618
复制相似问题