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

尼克皮克

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

使用数据库的一小部分它可以工作,但是如果我使用完整的数据库进行操作,我只会得到 nan 作为回报。

这可能是什么原因?

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)
萨拉瓦纳

我只是尝试$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的数字字段中有一个

并且typeof NaN 是 number,所以它不会被忽略

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章