这是我第一次使用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”),“用户名”:“ arecalde-contractor”,“ lastLog”:null,“名称”:“ Agustin Recalde”,“ url”:“ / profile / arecalde-contractor”, “ role”:“ Admin”,“ active”:true,“ id”:“ 9249”}


我敢肯定我正确地遵循了文档。我有想念吗?提前致谢!

最佳答案

我修好了它。我做错了。 else里面的代码现在看起来像这样

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

关于python - Pymongo $ currentDate不适用于存储,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/39088579/

10-12 22:02