【问题标题】:OrderedDict Field in mongoenginemongoengine 中的 OrderedDict 字段
【发布时间】:2015-07-01 07:49:57
【问题描述】:

我正在为我的网站使用带有 Django 的 mongoengine。

我将一些文章导入到我的 mongoengine 中,它有一个字段 text 这是一个有序的字典,其中章节名称作为键,章节内容作为值,如下所示:

{"text":{
"Introduction":"...",
"Algorithm":"...",
"Conclusion":"...",
"References":"..."}
}

但是当我使用text = DictField()作为Document的一个字段时,我得到了按字符排序的键,这与原来的顺序不同:

{"text":{
"Algorithm":"...",
"Conclusion":"...",
"Introduction":"...",
"References":"..."}
}

我想要字典的原始顺序,但似乎 mongoengine 不提供 OrderedDictField。

这个问题有什么解决办法吗?谢谢!

【问题讨论】:

  • 当您考虑更新选项时,在这里使用 dict 可能不是一个好主意。假设您想在“算法”之后添加“功能”。如果不替换整个 dict,底层 MongoDB 存储就无法做到这一点。如果您使用数组 ( list ),但是位置已设置,并且存在允许您在存储引擎中“插入位置”的操作。您可能想在这里考虑您的用例,好像位置很重要,这可能应该是一个数组。

标签: python django mongodb dictionary mongoengine


【解决方案1】:

目前不支持ordereddict,考虑使用ListField来存储2元组

[
    ("key1", "value1"),
    ("key2", "value2"),
]

可以很容易地变成OrderedDict (OrderedDict(that_list))

【讨论】:

    猜你喜欢
    • 2021-10-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-04-16
    • 1970-01-01
    • 2014-02-03
    • 2016-10-31
    • 2017-10-04
    相关资源
    最近更新 更多