发布mongdb集合时的Fillter数组

时间:2017-10-17 02:29:29

标签: mongodb meteor

我试图返回特定的集合,但是,我想过滤集合中的数组。我不确定这是否可行。在下面的示例中,我尝试使用_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 } }
  }
});

1 个答案:

答案 0 :(得分:0)

Jobs.find({ _id: 7ARk3dc2JA8g5pamA }, { candidateApplication: { $elemMatch: { candidateUserId: 2 } } }

这应该只返回带有_id和candidateUserId数组的文档,但该数组现在只包含你想要的对象。

{ "_id" : 7ARk3dc2JA8g5pamA, "candidateApplication" : [ { "candidateUserId": 2, "applied": false } ] } 

然后,您可以使用candidateApplication [0] .candidateUserId和candidateApplication [0] .applied

获取数据。

如上面的评论中所述,如果有相同的candidateUserId的更多实例,则只会返回第一个。