我有一个 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] 删除。
我来说两句