Mongodb 正在获取空数组,但在mongoose聚合中需要具有值的数组

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集合,这些ID存在于数据库中。但问题是我得到的结果是一个空数组,而我期望的是一个带值的数组

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
基础集合中的一些示例文档,将非常有帮助。