Mongoose findOne返回所有子文档
我尝试从集合中仅检索一个子文档。但它是所有的子文档,甚至是那些与过滤器不匹配的子文档Mongoose findOne返回所有子文档,mongoose,subdocument,Mongoose,Subdocument,我尝试从集合中仅检索一个子文档。但它是所有的子文档,甚至是那些与过滤器不匹配的子文档 LevelXP.findOne({ “公会”:“715192953118654467”, 'users.user':“687893451534106669” },(错误,结果)=>{ 如果(错误)抛出错误; console.log(result.users) } })您可能需要使用位置操作符$()。 将查询投影为只返回匹配的子文档 因此,在您的情况下,您可以这样做: LevelXP.findOne({
LevelXP.findOne({
“公会”:“715192953118654467”,
'users.user':“687893451534106669”
},(错误,结果)=>{
如果(错误)抛出错误;
console.log(result.users)
}
})
您可能需要使用位置操作符$
()。
将查询投影为只返回匹配的子文档
因此,在您的情况下,您可以这样做:
LevelXP.findOne({
'guild':"715192953118654467",
'users.user': "687893451534106669"
},
"users.$",
(err,result)=>{
console.log( result );
});
或者,语法的变体(成对的
),如下所示:
LevelXP.findOne({
'guild':"715192953118654467",
'users.user': "687893451534106669"
},
{"users.$":1},
(err,result)=>{
console.log( result );
});
谢谢,效果很好。但是当我使用.find而不是findOne时,它返回未定义的。你知道为什么吗?@RohanKumar因为find游标和findOne实际上返回一个获取的文档。你为什么需要使用find?