猫鼬findOne返回所有子文档

时间:2020-07-22 18:13:44

标签: mongoose subdocument

我尝试仅从集合中检索一个子文档。但这是所有子文档,甚至是那些与过滤器不匹配的子文档。

LevelXP.findOne({
            'guild':"715192953118654467",
            'users.user': "687893451534106669"
        },(err,result)=>{
            if(err) throw err;
            console.log(result.users)
          }
})
This is the data I have

但是当我使用上面的代码时,当我只返回1时,它将返回所有子文档。 请帮忙。

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 );
});