这是我第一次使用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/