Intern, was sind die Unterschiede zwischen diesen beiden Feldern? Welche Art von Schema werden diese Felder in Mongo zugeordnet? Wie sollten Dokumente mit Beziehungen zu diesen Feldern hinzugefügt werden? Zum Beispiel, wenn ichWas ist der Unterschied zwischen EmbeddedDocumentField und ReferenceField in Mongoengine
from mongoengine import *
class User(Document):
name = StringField()
class Comment(EmbeddedDocument):
text = StringField()
tag = StringField()
class Post(Document):
title = StringField()
author = ReferenceField(User)
comments = ListField(EmbeddedDocumentField(Comment))
verwenden und rufen
>>> some_author = User.objects.get(name="ExampleUserName")
>>> post = Post.objects.get(author=some_author)
>>> post.comments
[]
>>> comment = Comment(text="cool post", tag="django")
>>> comment.save()
>>>
sollte ich post.comments.append (Kommentar) oder post.comments + = Kommentar für dieses Dokument angehängt? Meine ursprüngliche Frage ergibt sich aus dieser Verwirrung darüber, wie ich damit umgehen soll.
Ich frage mich, ob Sie ein wenig mehr Einblick in den Unterschied zwischen diesen beiden Feldtypen bieten könnten, und welche Anwendungsfälle empfehlen Sie für jeden. Ich möchte die Frage nicht duplizieren, also habe ich gehüpft, Sie können mehr Informationen zu Ihrem hinzufügen. – Alex
'ReferenceField' verweist auf ein anderes Dokument,' EmbeddedDocumentField' ist Teil eines Dokuments. So werden die Beziehungen ManyToMany und ManyToOne besser auf verschiedene Dokumente angewendet, die OneToOne-Beziehung wird mehr auf ein Dokument angewendet. – tbicr
Also für M: M und M: 1 würden Sie 'EmbeddedDocumentField' und für 1: 1' ReferenceField' verwenden. Habe ich das richtig verstanden? – Alex