我尝试仅从集合中检索一个子文档。但这是所有子文档,甚至是那些与过滤器不匹配的子文档。
LevelXP.findOne({
'guild':"715192953118654467",
'users.user': "687893451534106669"
},(err,result)=>{
if(err) throw err;
console.log(result.users)
}
})
但是当我使用上面的代码时,当我只返回1时,它将返回所有子文档。 请帮忙。
答案 0 :(得分:1)
您可能要使用位置运算符$
(reference link here)。
要使您的查询投影只返回匹配的子文档
因此,您可以这样做:
LevelXP.findOne({
'guild':"715192953118654467",
'users.user': "687893451534106669"
},
"users.$",
(err,result)=>{
console.log( result );
});
或语法(paired
)的变体,如下所示:
LevelXP.findOne({
'guild':"715192953118654467",
'users.user': "687893451534106669"
},
{"users.$":1},
(err,result)=>{
console.log( result );
});