如何在PyMongo中保持dict的顺序

时间:2017-11-29 15:15:59

标签: python pymongo

我正在尝试在mongo db中创建以下文档,但由于某种原因,文档在数据之前保存了问题对象(我假设默认顺序是按键长度)。我希望问题对象将在文档的最后。

我正在使用来自flask_pymongo的PyMongo,我也尝试以下解决方案: https://stackoverflow.com/a/30787769/5494424

我尝试使用bson和OrderedDict但没有成功

这是我在python中创建dict代码的方式:

 gold_apple_report = {
  "_id": "",
  "updated_on": "",      
  "data": {
    "sms": {
      "status": "todo"
    },
    "catchapp": {
      "status": "todo"
    },
    "telegram": {
      "status": "todo"
    },
    "bookmarks": {
      "status": "todo"
    },
    "calendar": {
      "status": "todo"
    },
    "call_history": {
      "status": "todo"
    },
    "contacts": {
      "status": "todo"
    },
    "files": {
      "status": "todo"
    },
    "downloads": {
      "status": "todo"
    },
    "notes": {
      "status": "todo"
    },
    "posts": {
      "status": "todo"
    },
    "app_list": {
      "status": "todo"
    },
    "media": {
      "status": "todo"
    },
    "locations": {
      "status": "todo"
    },
    "chats": {
      "whatsapp": {
        "status": "todo"
      },
      "telegram": {
        "status": "todo"
      },
      "skype": {
        "status": "todo"
      },
      "line": {
        "status": "todo"
      },
      "viber": {
        "status": "todo"
      },
      "facebook": {
        "status": "todo"
      },
      "twitter": {
        "status": "todo"
      },
      "instagram": {
        "status": "todo"
      }
    }
  },
  "issues": {

  }
}

这就是它在mongoDb中的显示方式:

 gold_apple_report = {
      "_id": "",
      "updated_on": "",
      "issues": {

      },      
      "data": {
        "sms": {
          "status": "todo"
        },
        "catchapp": {
          "status": "todo"
        },
        "telegram": {
          "status": "todo"
        },
        "bookmarks": {
          "status": "todo"
        },
        "calendar": {
          "status": "todo"
        },
        "call_history": {
          "status": "todo"
        },
        "contacts": {
          "status": "todo"
        },
        "files": {
          "status": "todo"
        },
        "downloads": {
          "status": "todo"
        },
        "notes": {
          "status": "todo"
        },
        "posts": {
          "status": "todo"
        },
        "app_list": {
          "status": "todo"
        },
        "media": {
          "status": "todo"
        },
        "locations": {
          "status": "todo"
        },
        "chats": {
          "whatsapp": {
            "status": "todo"
          },
          "telegram": {
            "status": "todo"
          },
          "skype": {
            "status": "todo"
          },
          "line": {
            "status": "todo"
          },
          "viber": {
            "status": "todo"
          },
          "facebook": {
            "status": "todo"
          },
          "twitter": {
            "status": "todo"
          },
          "instagram": {
            "status": "todo"
          }
        }
      }

    }

0 个答案:

没有答案