0

だから私には「セクション」があり、各セクションにはいくつかの「ナゲット」があります。私のモデルはこれです:

class Nugget(EmbeddedDocument):
    title = StringField(required=True)
    img = StringField(required=True)
    content = StringField(required=True)
    section = StringField(required=True)
    next_nugget = StringField(required=True)
    previous_nugget = StringField(required=True)

class Section(Document):
    meta = {"collection":"Sections"}
    title = StringField(required=True)
    nuggets = ListField(EmbeddedDocumentField(Nugget), default=list)

私の質問は、ナゲットが特定の順序(たとえば挿入順序)で保存および取得されるようにするにはどうすればよいですか?最も効率的な方法は、両端キュー構造をエミュレートすることです。では、mongoengineでそれをどのように行うことができますか?それが可能であれば、mongoengineのSortedListFieldを使用して同じ効果を得ることができますか?

4

1 に答える 1

1

最善の方法は、アプリケーションでこれを管理することです-常にpushリストに追加します。それ以外の場合は、リストを希望の順序で保存(上書き)する必要があります。その欠点は、コードに競合状態を導入しないように注意する必要があることです。そのため、プッシュ操作を使用することをお勧めします。http://docs.mongoengine.org/en/latest/guide/querying.html ?highlight = push#atomic-updatesを参照してください。

于 2012-09-06T17:34:28.723 に答える