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 回答