Есть ли способ автоматического удаления метаданных списка из хранимого ListField в mongoengine? - PullRequest
1 голос
/ 01 февраля 2020

Я сейчас работаю с mongoengine в python. Когда я сохраняю Document с помощью переменной списка и «получаю» его после, mongoengine добавляет некоторые метаданные в список. Как мне избавиться от метаданных?

class Example(Document)
   key = StrinField(primary_key = True)
   lis1 = ListField()

lis2 = [1,2,3]

obj = Example(lis1 = lis2, key = "123")
obj.save()

obj0 = Example.objects.get(key = "123")
print(obj0.lis1)

>> Output is the list plus metadata like _dereferenced, _instance and _name

Мой подход заключается в том, чтобы сохранить все списки в виде сериализованной строки, но для этого должно быть лучшее решение!

1 Ответ

0 голосов
/ 02 февраля 2020

(автор MongoEngine здесь) MongoEngine действительно добавляет некоторые метаданные в списки, он использует подкласс встроенного класса list позади сцены. Они не хранятся в MongoDB, они позволяют MongoEngine иметь дело с автоматической разыменовкой или отслеживать изменения, которые применяются к экземпляру документа. Они должны быть безвредны для вашего приложения, поскольку ими можно манипулировать как стандартными списками python.

Попытка обойти это не очень хорошая идея, поскольку она является частью внутренних компонентов MongoEngine.

...