2017-03-15 21 views
0

我想對我的文檔進行分組,並且對於某些字段將記錄的值與最近的時間戳(即最近插入/更新的值)進行比較。在下面的示例中,我想按用戶標識和電話進行分組,並以該組中最近的時間戳記錄該電子郵件。我最初的策略是通過降時間戳進行排序和採取的第一個值,像這樣的聚合:PyMongo通過考慮最近的值來計算

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?

回答

1

您的管線語法不正確。累加器走在自己的領域。

喜歡的東西

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

謝謝!修復。欣賞快速反應。 – Vince