2017-03-15 3 views
0

私のドキュメントをグループ化したいと思います。特定のフィールドでは、最新のタイムスタンプ(すなわち、最近挿入/更新された値)のレコードの値をとります。以下の例では、ユーザーIDと電話でグループ化し、そのグループの最新のタイムスタンプを持つレコードの電子メールを取得します。私は次のようなエラーに遭遇しかしフィールドの最新の値をとることによって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

関連する問題