我有一个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)
答案 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是数字,因此不会被忽略