首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >发布mongdb集合时的Fillter数组

发布mongdb集合时的Fillter数组
EN

Stack Overflow用户
提问于 2017-10-17 10:29:29
回答 1查看 63关注 0票数 0

我试图返回一个特定的集合,但是,我想过滤集合中的一个数组。我不确定这是否可能。在下面的例子中,我试图用_id: 7ARk3dc2JA8g5pamA返回集合,并过滤掉"candidateUserId": "2"的数组对象。我是在一个Meteorjs应用程序中这样做的。

例如:` `Collection‘

代码语言:javascript
运行
复制
{
  "_id": "7ARk3dc2JA8g5pamA",
  "jobTitle": "Developer",
  "candidateApplication": [
    {
      "candidateUserId": "1",
      "applied": true
    },
    {
      "candidateUserId": "2",
      "applied": false
    }
  ]
}

路径:Publish command

代码语言:javascript
运行
复制
return Jobs.find({ _id: 7ARk3dc2JA8g5pamA }, {
  $filter: {
    input: candidateApplication,
    cond: { candidateUserId: { $eq: 1 } }
  }
});
EN

回答 1

Stack Overflow用户

发布于 2017-10-18 10:07:38

代码语言:javascript
运行
复制
Jobs.find({ _id: 7ARk3dc2JA8g5pamA }, { candidateApplication: { $elemMatch: { candidateUserId: 2 } } }

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

代码语言:javascript
运行
复制
{ "_id" : 7ARk3dc2JA8g5pamA, "candidateApplication" : [ { "candidateUserId": 2, "applied": false } ] } 

然后,您可以使用candidateApplication.candidateUserId和candidateApplication.applied获取数据

正如上面注释中所提到的,如果有更多相同candidateUserId的实例,则只会返回第一个实例。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/46781618

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档