Mongo查询“$ avg”返回nan没有错误消息

时间:2018-02-23 00:07:12

标签: mongodb

我有一个mongo查询,我尝试计算大型数据库子平均值的平均值,我尝试使用$ bucket并手动迭代$ match。

使用数据库的一小部分它可以工作,但如果我使用完整的数据库,那么我只得到了返回。

原因可能是什么?

query = self.mongodb_archive.price_scrape_historical.aggregate([

    {
        "$match": {"seconds_until_start": {"$gt": from_sec, "$lt": to_sec}}
    },

    {
        "$group": {
            "_id": "null",
            "avg_ltp": {"$avg": "$LTP"}
        }
    }

],
    allowDiskUse=True)
return list(query)

1 个答案:

答案 0 :(得分:1)

我刚尝试$avg NaN作为数值,这是Mongo3.4的结果

> db.tt.insert({amount: NaN})
WriteResult({ "nInserted" : 1 })

> db.tt.find()
{ "_id" : ObjectId("5a8fcfb5ce385223408b4178"), "amount" : NaN }

> db.tt.aggregate([{$group : {_id : null, avg : {$avg : "$amount"}}}])
{ "_id" : null, "avg" : NaN }

所以很明显你的数字字段中有NaN

类型的NaN是数字,因此不会被忽略