Mongoengine:为什么to_json返回$oid或$date键?

1 投票
1 回答
1405 浏览
提问于 2025-04-18 17:14

我在用Python和MongoDB的mongoengine库时,发现“to_json”这个函数的表现跟我预期的不太一样。

举个例子,我有一个叫“Comments”的文档,当我调用comments.to_json()时,返回的结果是:

  {
  "_id": {
    "$oid": "53eb97a312f8035580b92241"
  },
  "created": {
    "$date": 1407955862027
  }

而我其实希望得到的是:

  {
  "_id":"53eb97a312f8035580b92241",
  "created": 1407955862027
  }

我真的需要解析所有的JSON数据才能得到我想要的结果吗?

1 个回答

2

JSON只支持一些简单的数据类型,所以它本身并不支持像ObjectId(对象ID)或者日期这样的类型。MongoDB使用的BSON是一种二进制的JSON超级类型,它支持更多的数据类型。

为了能够在BSON和JSON之间转换时不丢失信息,MongoDB提供了一种扩展的JSON格式,这就是MongoEngine使用的格式。

撰写回答