猫鼬返回一个以上的结果

凯文

您好,我具有以下收集结构:

{
    name : 'name1'
    projects : [
      {projectId : 123 , ...more},
      {projectId : 124 , ...more},
      {projectId : 125 , ...more},
    ]
  }
  
  {
    name : 'name2'
    projects : [
      {projectId : 126 , ...}
      {projectId : 127 , ...}
    ]
  }

我的目标是根据其projectId查找单个项目。因此,如果我要查找ID为123的项目,则结果应为:{projectId : 123 , ...more}

但是现在它正在返回所有内容:

 {
        name : 'name1'
        project : [
          {projectId : 123 , ...more},
          {projectId : 124 , ...more},
          {projectId : 125 , ...more},
        ]
      }

我的查询看起来像:

   const project = await ClientManager.findOne({
      'project.projectId': projectId,
    });


{
    "projectId" : "123",
}
胡子

由于存在匹配项,因此与您当前的项目匹配,它将返回整个文档。您要做的是使用$ elemMatch运算符,并在投影中使用它。

看起来像这样

 const project = await ClientManager.findOne({
  project: {$elemMatch: { projectId: projectId } },
}, {'project.$': 1});

有关更多详细信息,请参见https://docs.mongodb.com/manual/reference/operator/query/elemMatch/

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章