PyMongo 聚合不适用于 $max 运算符

Posted

技术标签:

【中文标题】PyMongo 聚合不适用于 $max 运算符【英文标题】:PyMongo aggregation Not working with $max operator 【发布时间】:2020-09-17 01:54:19 【问题描述】:

我的查询在 mongo shell 上运行良好。但是当通过 pymongo 运行时会出错。有人可以帮我解决这个问题吗?

db.collectioname.aggregate([
        "$match":  "$and": [ 
                         "organization_id": int(organization_id) , 
                         "resulttime":
                                "$gte":stdate,                                          
                                "$lte":enddate  
                             
                        
                    ] 
            
    ,
     "$skip" : int(offset) ,
     "$limit" : int(limit) , 
     "$group":  
        "_id": "$userid",
        "max_temperature":  "$max": "$temperature" , 
        "min_temperature":  "$min": "$temperature"  
    
     ])

但是,我收到一个错误

pymongo.errors.OperationFailure: unknown operator: $max

【问题讨论】:

【参考方案1】:

我试过了;这对我来说可以。您能否确认此示例代码有效。如果不打印完整的堆栈跟踪。

import pymongo
import datetime

offset = 0
limit = 1
organization_id = 1
stdate = datetime.datetime(2020, 1, 1, 0, 0)
enddate = datetime.datetime(2021, 1, 1, 0, 0)

db = pymongo.MongoClient()['mydatabase']
db.collectioname.insert_one('organization_id': organization_id, 'resulttime': datetime.datetime.now(), 'temperature': 37.4)

records = db.collectioname.aggregate([
    "$match": "$and": [
        "organization_id": int(organization_id),
        "resulttime": 
            "$gte": stdate,
            "$lte": enddate
        ]
    ,
    "$skip": int(offset),
    "$limit": int(limit),
    "$group": 
        "_id": "$userid",
        "max_temperature": "$max": "$temperature",
        "min_temperature": "$min": "$temperature"
    
])

print(list(records))

【讨论】:

非常感谢您的帮助。我发现了错误并已修复。

以上是关于PyMongo 聚合不适用于 $max 运算符的主要内容,如果未能解决你的问题,请参考以下文章

suppressWarnings() 不适用于管道运算符

运算符 = 不适用于 fstream

前向声明不适用于转换运算符

三元运算符不适用于 lambda 函数

Fortran 派生类型:重载赋值运算符不适用于“参数”属性

集合运算 & 聚合函数