您好,我具有以下收集结构:
{
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] 删除。
我来说两句