Pymongo $ currentDate对存储无效

时间:2016-08-22 20:54:14

标签: python mongodb pymongo

这是我第一次使用pymongo。我有一个更新文档中的用户数据的方法。例如,当您登录时,它应该更新lastLog字段,该字段指示用户上次登录的时间。

这是方法

    def update_user(self, mongo, field, value=None):
    print self.username
    if field != 'lastLog':
        result = mongo.db.Users.update(
                    {'username': self.username},
                    {
                        '$set': {
                            field: value
                        }
                    }
                )
    else:
        result = mongo.db.Users.update(
                    {'username': self.username},
                    {
                        '$set': {
                            '$currentDate': {
                                'LastLog': {
                                    "$type": "timestamp"
                                }
                            }
                        }
                    }
                )
    if result.matched_count != 1:
        #NEEDLOG
        print "No update performed"
        return False

但是,每次我登录时,都会收到此错误:

WriteError: The dollar ($) prefixed field '$currentDate' in   '$currentDate' is not valid for storage.

这是文档在MongoDB中的外观

  

db.Users.find()   {" _id" :ObjectId(" 57b64e1330e6e23b7d050c76"),"用户名" :" iscalde-contractor"," lastLog" :null,"姓名" :" Agustin Recalde"," url" :" / profile / arecalde-contractor"," role" :"管理员","活跃" :true," id" :" 9249" }

我非常确定我正确地遵循了文档。我错过了什么吗?提前致谢!

1 个答案:

答案 0 :(得分:1)

我修好了。我做错了。其他内部的代码现在看起来像这样

    else:
        result = mongo.db.Users.update_one(
                    {'username': self.username},
                    {
                      '$currentDate': {
                        'lastLog': {'$type': 'timestamp'}
                      }
                    }
                )