我必须错过一些非常明显的东西。但是我似乎找不到使用mongoengine表示集合的方法。
class Item(Document):
name = StringField(required=True)
description = StringField(max_length=50)
parents = ListField(ReferenceField('self'))
i = Item.objects.get_or_create(name='test item')[0]
i2 = Item(name='parents1')
i2.save()
i3 = Item(name='parents3')
i3.save()
i.parents.append(i2)
i.parents.append(i2)
i.parents.append(i3)
i.save()
上面的代码将在i1的父字段中为i2创建一个重复项。您如何在mongoengine中表达诸如关系之类的外键?
代替使用append
然后使用save
并让MongoEngine将其转换为更新,您可以使用原子更新和$ addToSet方法-参见the updating mongoDB docs
因此,您可以这样做:
i.update(add_to_set__parents=i2)
i.update(add_to_set__parents=i3)
i.update(add_to_set__parents=i2)
addToSet
和each
的支持目前不存在-参见:https://github.com/MongoEngine/mongoengine/issues/33
更新:
支持[add_to_set。