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 );
});
我尝试从集合中只检索一个子文档。但它是所有子文档,甚至是那些不符合过滤器的子文档。
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 );
});