[英]Mongoose returning more than one result
您好,我有以下集合结构:
{
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/
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.