Вопрос:

Pymongo $ currentDate недействителен для хранения

python mongodb pymongo

679 просмотра

1 ответ

16 Репутация автора

Я впервые использую пимонго. У меня есть метод, который обновляет данные пользователей в документе. Например, при входе в систему следует обновить поле 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"), "username": "arecalde-contractor", "lastLog": null, "Name": "Agustin Recalde", "url": "/ profile / arecalde-contractor "," role ":" Admin "," active ": true," id ":" 9249 "}

Я уверен, что правильно следую документации. Я что-то пропустил? Заранее спасибо!

Автор: Agustin Источник Размещён: 22.08.2016 08:54

Ответы (1)


1 плюс

16 Репутация автора

Решение

Я починил это. Я делал это неправильно. Код внутри остального теперь выглядит так

    else:
        result = mongo.db.Users.update_one(
                    {'username': self.username},
                    {
                      '$currentDate': {
                        'lastLog': {'$type': 'timestamp'}
                      }
                    }
                )
Автор: Agustin Размещён: 22.08.2016 10:05
Вопросы из категории :
32x32