MongoDB 聚合查询添加到管道导致没有结果

MongoDB aggregate query adding to pipeline causing no results

我正在 运行通过 Py 聚合Mongo。

聚合的格式非常好,如下所示:

[{
    $match: {
        syscode: {
            $in: [598.0]
        },
        date: {
            $gte: newDate(1509487200000),
            $lte: newDate(1510264800000)
        }
    }
},
{
    $group: {
        _id: {
            date: "$date",
            start_date: "$start_date",
            end_date: "$end_date",
            daypart: "$daypart",
            network: "$network"
        },
        syscode_data: {
            $push: {
                syscode: "$syscode",
                cpm: "$cpm"
            }
        }
    }
}]

当我在 Python.

中对其光标使用 .explode 方法时,它 returns 没有结果

当我通过 MongoDB 的 NoSQL Booster 运行 它时,我得到了结果。也就是说,Mongo 日志文件与我 运行 通过 PyMongo.

时看到的内容没有变化

当我查看 Mongo 日志时,其中添加了一个额外的管道分组。显然 Booster 知道该怎么做而我不知道。

{ $group: { _id: null, count: { $sum: 1.0 } } }

这是我看到的完整日志行。

2018-03-11T21:05:04.374+0200 I COMMAND  [conn71] command Customer.weird_stuff command: aggregate { aggregate: "rate_cards", pipeline: [ { $match: { syscode: { $in: [ 598.0 ] }, date: { $gte: new Date(1509487200000), $lte: new Date(1510264800000) } } }, { $group: { _id: { date: "$date", start_date: "$start_date", end_date: "$end_date", daypart: "$daypart", network: "$network" }, syscode_data: { $push: { syscode: "$syscode", cpm: "$cpm" } } } }, { $group: { _id: null, count: { $sum: 1.0 } } } ], cursor: { batchSize: 1000.0 }, $db: "Customer" } planSummary: COLLSCAN keysExamined:0 docsExamined:102900 cursorExhausted:1 numYields:803 nreturned:1 reslen:134 locks:{ Global: { acquireCount: { r: 1610 } }, Database: { acquireCount: { r: 805 } }, Collection: { acquireCount: { r: 805 } } } protocol:op_query 122ms

这是怎么回事?我如何从 Python 方面处理这个问题?

我在挖掘时的注意事项:这个管道 运行s 当我幸运地使用 Pymongo 的无序字典(默认)时。当我 运行 输入 JSON 通过 JSON.Jsondecoder 行时:

json.JSONDecoder(object_pairs_hook=OrderedDict).decode(parsed_param) 

输出具有非常复杂的格式(由于管道需要维持其顺序,这是必需的)并最终传递了额外的部分。

因此,由于缺乏兴趣,我找到了解决方法。检查这个问题,我发现当我向管道 ({"$sort": {"_id": 1}}) 添加一个额外的步骤时,从 Python 字典到 Mongo JSON 聚合的翻译没有生成额外的 JSON对象。

这是一个糟糕的答案,但我认为根本原因是在这个特定环境中复杂有序字典和 Mongo JSON 查询之间的转换有一个小错误影响了这个特定询问。

我很高兴能找到它并进一步检查它,但我被新工作埋没了。