【问题标题】:Mongoose returning more than one resultMongoose 返回多个结果
【发布时间】:2020-11-19 00:49:23
【问题描述】:

您好,我有以下集合结构:

{
    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",
}

【问题讨论】:

    标签: javascript node.js mongodb mongoose


    【解决方案1】:

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

    看起来像这样

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

    详情请见https://docs.mongodb.com/manual/reference/operator/query/elemMatch/

    【讨论】:

      猜你喜欢
      • 2020-11-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-06-18
      • 2021-03-30
      • 1970-01-01
      相关资源
      最近更新 更多