MongoEngine Wierdness

时间:2015-01-26 12:43:30

标签: python mongodb mongoengine

考虑以下代码:

>>> class A(mongoengine.Document):
...     d = mongoengine.DictField()

>>> a = A()
>>> a.d['n'] = 1
>>> a.d['n']
1

到目前为止一切顺利。然后:

>>> a.d['ns'] = []
>>> a.d['ns']
[]
>>> a.d['ns'].append(a.d['n'])
>>> a.d['ns']
[1]
>>> a.d['ns'].append(a.d['n'])
>>> a.d['ns']
[1]

这很奇怪。让我们再试一次:

>>> a.d['ns'] = [0]
>>> a.d['ns']
[0]
>>> a.d['ns'].append(a.d['n'])
>>> a.d['ns']
[0]
>>> a.d['ns'].append(1)
>>> a.d['ns']
[0, 1]

似乎问题出现在同一个表达式的__getitem__中两次;如果列表为空,则添加该项;如果不是,没有任何反应;但仅适用于__getitem__ed项目。发生了什么事?

感谢。

修改

我使用PyPi上最新的MongoEngine,即0.8.7。

0 个答案:

没有答案