将MongoDB聚合管道代码从Javascript转换为Python

2024-03-19 05:36:24 发布

您现在位置:Python中文网/ 问答频道 /正文

作为Python/MongoDB/pymongo中的新手,我使用Studio 3T生成一个工作的聚合管道,用于访问和处理MongoDB集合的内容。我可以看到它在那里工作得很好,并输出预期的结果。问题是studio3t为代码生成一个.js文件,而我需要在包装器中用Python编写代码。

在Studio 3T上正确执行代码:

db.cln_matching_results.aggregate(

// Pipeline
[
    // Stage 1
    {
        $unwind: {
            path : '$_availability',
            includeArrayIndex : 'arrayIndex', // optional
            preserveNullAndEmptyArrays : false // optional
        }
    },

    // Stage 2
    {
        $unwind: {
            path : '$_availability.availability_data',
            includeArrayIndex : 'arrayIndex', // optional
            preserveNullAndEmptyArrays : false // optional
        }
    },

    // Stage 3
    {
        $match: {
            '_availability.availability_data.start_date': {$gte: "2017-09-14T00:00:00.000Z", $lte: "2017-09-31T00:00:00.000Z"}
        }
    },

    // Stage 4
    {
        $group: {
                   _id : '$_id',
                   MD_offered_max: { $sum: { $divide: [ "$_availability.availability_data.value", 100 ] } }
        }
    },
]);

我在Python包装器中复制工作代码的尝试打破了管道,并在执行后给出了一个空数组。我强调,当我注释下面的代码时,其余python代码都可以正常工作:

^{pr2}$

我的问题是:我在尝试将代码从.js格式转换为Python时出错了?谢谢你的帮助。


Tags: path代码falsedata管道mongodbjsstage