簡體   English   中英

PyMongo通過獲取字段的最新值進行匯總

[英]PyMongo aggregate by taking most recent value of field

我想對文檔進行分組,並且對於某些字段,請使用具有最新時間戳記的記錄值(即,最近插入/更新的值)。 在下面的示例中,我想按用戶ID和電話分組,並獲取該組中最近時間戳記的電子郵件。 我的最初策略是按時間戳記降序排序,並采用第一個值進行聚合,如下所示:

import pymongo
...
pipeline = [
        {
            "$sort": {"timestamp": -1 }
        },
        { "$group": {
            "_id": {
                    "userId": "$userId",
                    "userPhone": "$userPhone",
                    "userEmail": { "$first" : "$userEmail"},
                    "count": {"$sum": 1}
            }
        }
    ]

但是我遇到以下錯誤:

pymongo.errors.OperationFailure: Unrecognized expression '$first'

pymongo是否有等效的$ first函數可用?

您的管道語法不正確。 蓄能者走在自己的領域。

就像是

pipeline = [ 
    { "$sort": {"timestamp": -1 } }, 
    { "$group": { "_id": { "userId": "$userId", "userPhone": "$userPhone" }, "userEmail": { "$first" : "$userEmail"}, "count": {"$sum": 1} } } 
]

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM