Mongoengine:将 ListField 项插入到特定的嵌入式文档中
Mongoengine: insert ListField item into a specific embedded Document
我有一个文档和一个嵌入文档,我想将一个值插入到我的嵌入文档的 ListField 中。我在 Whosebug 上找不到关于这个问题的任何信息,所以也许任何人都可以帮助我。
这基本上是我的模型class:
class Person(EmbeddedDocument):
oid = ObjectIdField(required=True, default=ObjectId,
unique=True, primary_key=True, sparse=True)
personName = StringField()
charakterEntries= ListField()
class schoolClass(Document):
className= StringField(unique=true)
persons = ListField(EmbeddedDocumentField(Personn))
所以我想进入特定 class 的特定人并在 listField charakterEntries 中插入一个新的 charakter 条目。
假设我有一个 className "chemistry"
并且想要将新的 charakter entry "polite"
插入到拥有 oid="abc123"
的人的 ListField "charakterEntries"
中。
虽然我可以做这样的事情:
person= Person.objects(oid=id).get()
person.charakterEntries.append("polite")
person.save()
但随后出现以下错误:AttributeError: type object 'Person' has no attribute 'objects'
有谁知道如何解决这个问题?我在 Whosebug 上尝试了很多东西,但无法让它工作。所以请不要马上关闭这个问题。
谢谢 :-)
所以我终于找到了解决办法:
schoolClass.objects.filter(persons__oid="abc123").update_one(
push__persons__S__charakterEntries="polite")
这会将新的字符条目礼貌地放在 ListField 的末尾。
我有一个文档和一个嵌入文档,我想将一个值插入到我的嵌入文档的 ListField 中。我在 Whosebug 上找不到关于这个问题的任何信息,所以也许任何人都可以帮助我。
这基本上是我的模型class:
class Person(EmbeddedDocument):
oid = ObjectIdField(required=True, default=ObjectId,
unique=True, primary_key=True, sparse=True)
personName = StringField()
charakterEntries= ListField()
class schoolClass(Document):
className= StringField(unique=true)
persons = ListField(EmbeddedDocumentField(Personn))
所以我想进入特定 class 的特定人并在 listField charakterEntries 中插入一个新的 charakter 条目。
假设我有一个 className "chemistry"
并且想要将新的 charakter entry "polite"
插入到拥有 oid="abc123"
的人的 ListField "charakterEntries"
中。
虽然我可以做这样的事情:
person= Person.objects(oid=id).get()
person.charakterEntries.append("polite")
person.save()
但随后出现以下错误:AttributeError: type object 'Person' has no attribute 'objects'
有谁知道如何解决这个问题?我在 Whosebug 上尝试了很多东西,但无法让它工作。所以请不要马上关闭这个问题。
谢谢 :-)
所以我终于找到了解决办法:
schoolClass.objects.filter(persons__oid="abc123").update_one(
push__persons__S__charakterEntries="polite")
这会将新的字符条目礼貌地放在 ListField 的末尾。