Как я могу получить текущее значение поля измененного документа в mongoengine? - PullRequest
0 голосов
/ 07 ноября 2019

Когда я меняю документ, я вижу в поле новое значение. Но иногда я хочу увидеть его старое значение (или было бы правильно сказать, его текущее значение). Я знаю, что могу видеть измененные поля в атрибуте _changed_fields, и что-то подсказывает мне, что я тоже вижу текущее значение. Но я не могу найти где. И мои поиски не дали результата.

Что я хочу заметить: я хочу найти решение для mongoengine, а не для pymongo. Потому что я знаю, что могу запросить документ по pymongo и получить документ, но это дополнительный запрос к базе данных, и я бы предпочел не беспокоить db еще раз.

Итак, повторяя вопрос выше: как я могу получить текущее значение поля измененного документа в mongoengine?

1 Ответ

0 голосов
/ 07 ноября 2019

Как я уже упоминал в вопросе, есть решение с pymongo:

user = User.objects.with_id(some_id)
user.email = 'test@mail.ru'
# And then somewhere below I want to see an old value
# For example, I want 'email' field
user_coll = User._get_collection()
user_data = user_coll.find_one({'_id': user}, {'_id': 0, 'email': 1})
old_value = user_data.get('email', '')

Но был дополнительный запрос к базе данных. И из-за этого я хочу найти решение с mongoengine.

...