如何在 mongodb 中查找包含 NaN 值的字段的 $avg 和 $sum?
Posted
技术标签:
【中文标题】如何在 mongodb 中查找包含 NaN 值的字段的 $avg 和 $sum?【英文标题】:how to find $avg and $sum for fields which contain NaN value in mongodb? 【发布时间】:2021-12-25 22:34:18 【问题描述】:当我使用 mongo cli 或 javascript 时,我可以在 mongodb 中使用 $group
子句之前找到并限制包含 NaN 值的列。但是,当我使用 python 及其主要库“pymongo”时,它似乎无法做到这一点。如下代码 NaN 不是 python 语法的一部分。而在 javaScript 中它是简单直接的。有没有人有同样的问题?
javascript
db.getCollection('plan.data_pool').aggregate([
'$match':geoid:'00','v':"$ne":NaN,"$group":"_id":"$accountable_id","agg":"$sum":"$v"
])
python (pymongo)
db['plan.data_pool'].aggregate(['$match':geoid:'00','v':"$ne":NaN,
"$group":"_id":"$accountable_id","agg":"$sum":"$v"
data_pool
集合的示例文档是这样的:
"_id" : ObjectId("619149fa0f91f1b3954f7128"),
"opg" : "sum",
"opt" : "sum",
"code" : "9-8-1-1-1-7",
"responsible" : [
"61"
],
"parent_id" : "610a6abb566701e77a214355",
"accountable_id" : "59",
"data_item" : "610a6c49566701e77a21435c",
"geoid" : "HQ",
"year" : 2019 ,
"period" : "3M",
"tf" : 3,
"w" : 100.0,
"p" : 6.0,
"v" : NaN,
"r" : 33.3333333333333,
"plan" : "60d2ce9cc0b1f833dbd9563a"
【问题讨论】:
你能分享一个来自data_pool
集合的示例文档吗?我认为这在 python 中是可能的
我在问题中添加了一个示例文档。
这有帮助吗:***.com/questions/944700/…
@Joe 不幸的是,这是用于检查 python 范围内的变量。在这个问题中,我们需要通过 pymongo 发送条件,以便在 mongodb 中检查它。
NaN 是由 IEEE-754 定义的,您是否尝试用 python 语法而不是 javascript NaN
指定它?
【参考方案1】:
MongoDB 中的 NaN
值在 pymongo 中由 float('NaN')
表示,因此您可以使用:
'v': '$ne': float('NaN')
【讨论】:
这是一个有价值的答案。有用。好棒亲爱的肚皮,非常感谢你。以上是关于如何在 mongodb 中查找包含 NaN 值的字段的 $avg 和 $sum?的主要内容,如果未能解决你的问题,请参考以下文章
如何在包含浮点数和 Nan 或 None 值的同一列中舍入浮点值?
为啥 mongodb 查询在数组中查找具有两个值的文档不起作用?
如何将包含 float 和 nan 值的 Dataframe 转换为 datetime python?