Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/typescript/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
mongodb聚合返回的值与记录的值不同_Mongodb_Typescript - Fatal编程技术网

mongodb聚合返回的值与记录的值不同

mongodb聚合返回的值与记录的值不同,mongodb,typescript,Mongodb,Typescript,当我运行聚合时,结果和数据显示不同的值我不明白为什么会发生这种情况,如何解决这个问题 const data = await QuestionBank.aggregate([{ $match: { $and: [{ question_sub_catagory: "Data Sufficiency" }, { difficulty_level: "Easy"

当我运行聚合时,结果和数据显示不同的值我不明白为什么会发生这种情况,如何解决这个问题

const data = await QuestionBank.aggregate([{
    $match: {
        $and: [{
            question_sub_catagory: "Data Sufficiency"
        }, {
            difficulty_level: "Easy"
        }]
    }
},
    {
        $sample: {
            size: 1
        }
    },
    {
        $group: {
            _id: {
                question_id: "$question_id",
                question_sub_catagory: "Data Sufficiency",
                difficulty_level: "Easy"
            }
        }
    }
], function(err: any, result: string) {
    if (err) {
        console.log(err);
    };
    console.log(result, "result");
    return result

})
console.log(data);
输出为:

[ { _id:
     { question_id: '3febc9ef-cb3e-42c7-bfb6-a18e780cab6c',
       question_sub_catagory: 'Data Sufficiency',
       difficulty_level: 'Easy' } } ] 
结果是:

[ { _id:
     { question_id: '43abc9ef-cb3e-42c7-bfb6-a18e780cab6c',
       question_sub_catagory: 'Data Sufficiency',
       difficulty_level: 'Easy' } } ]

您正在混合回调和承诺的语法

根据经验,异步函数签名将是其中之一。返回一个承诺,您可以
等待它
。然后()。或者调用回调函数

Mongo支持这两种类型的调用。通过给它一个回调函数,基本上就是告诉Mongo不要返回承诺

因此,要么放弃回调:

const data = await QuestionBank.aggregate([
    {
        $match: {
            $and: [
                {
                    question_sub_catagory: "Data Sufficiency"
                }, {
                    difficulty_level: "Easy"
                }
            ]
        }
    },
    {
        $sample: {
            size: 1
        }
    },
    {
        $group: {
            _id: {
                question_id: "$question_id",
                question_sub_catagory: "Data Sufficiency",
                difficulty_level: "Easy"
            }
        }
    }
]);
console.log(data);
或者将其包装在保留当前结构的承诺中(如果出于某种原因需要):


您正在混合回调和承诺的语法

根据经验,异步函数签名将是其中之一。返回一个承诺,您可以
等待它
。然后()。或者调用回调函数

Mongo支持这两种类型的调用。通过给它一个回调函数,基本上就是告诉Mongo不要返回承诺

因此,要么放弃回调:

const data = await QuestionBank.aggregate([
    {
        $match: {
            $and: [
                {
                    question_sub_catagory: "Data Sufficiency"
                }, {
                    difficulty_level: "Easy"
                }
            ]
        }
    },
    {
        $sample: {
            size: 1
        }
    },
    {
        $group: {
            _id: {
                question_id: "$question_id",
                question_sub_catagory: "Data Sufficiency",
                difficulty_level: "Easy"
            }
        }
    }
]);
console.log(data);
或者将其包装在保留当前结构的承诺中(如果出于某种原因需要):