Mongodb 正在获取空数组,但在mongoose聚合中需要具有值的数组
我已经检查了ExamResult集合,这些ID存在于数据库中。但问题是我得到的结果是一个空数组,而我期望的是一个带值的数组Mongodb 正在获取空数组,但在mongoose聚合中需要具有值的数组,mongodb,mongoose,mongodb-query,Mongodb,Mongoose,Mongodb Query,我已经检查了ExamResult集合,这些ID存在于数据库中。但问题是我得到的结果是一个空数组,而我期望的是一个带值的数组 ExamResult.aggregate([ { $match: { examId: { $in: examIds } } }, { $group: { _id: '$studentId', total: { $sum: '$marksObtain' }, }, }, ]); 我怎样才能解决这个问题? 这是我收集的
ExamResult.aggregate([
{ $match: { examId: { $in: examIds } } },
{
$group: {
_id: '$studentId',
total: { $sum: '$marksObtain' },
},
},
]);
我怎样才能解决这个问题?
这是我收集的样本数据
[
{
"_id": {
"$oid": "5fba1f198ab1eb30c3f0a81c"
},
"studentId": {
"$oid": "5fb9f7f7adcf48bc87512954"
},
"examId": {
"$oid": "5fb9fbcaadcf48bc8751295b"
},
"answers": [
{
"_id": {
"$oid": "5fba3be009527261e2f91ecf"
},
"answer": [
"a"
],
"questionId": {
"$oid": "5fb9fa4cadcf48bc87512959"
},
"marks": 5
},
{
"_id": {
"$oid": "5fba303f9bb9a45556eadf91"
},
"answer": [
"a",
"b"
],
"questionId": {
"$oid": "5fb9faecadcf48bc8751295a"
},
"marks": 45
}
],
"updatedAt": {
"$date": "2020-11-26T21:06:41.479Z"
},
"createdAt": {
"$date": "2020-11-22T08:19:37.054Z"
},
"__v": 0,
"publishedAt": 1606424801364,
"marksObtained": 50
}
解决方案:examId是一个普通字符串,在转换为ObjectId之后,它被解析了
//ObjectId转换
const{ObjectId}=require('mongoose')。类型;
常量oid=对象ID(examId);
您的问题缺少一些突出的细节,例如examId
的BSON类型是什么(这可以从ExamResult
模型模式定义中轻松推断),输入examIds
的典型值是什么,如果您能够解决上述问题,并提供ExamResult
基础集合中的一些示例文档,将非常有帮助。