Mongoose findOne 返回所有子文档

Mongoose findOne Returning all sub documents

我尝试从集合中只检索一个子文档。但它是所有子文档,甚至是那些不符合过滤器的子文档。

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

但是当我使用上面的代码时,它 return 是所有子文档,而我应该 return 只有 1 个。 请帮忙

您可能需要使用位置运算符 $ (reference link here)。 将查询投影到 return 匹配

的子文档

所以在你的情况下,你可以这样做:

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