Mongoengine PointField给出了期望的位置对象,位置数组的格式错误不正确

时间:2013-11-20 13:46:55

标签: python mongodb pymongo mongoengine nosql

我的模型如下:

class Station(Document):
    location = PointField()

尝试按如下方式编写数据:

station = Station()
station.location = {
    "type": "Point",
    "coordinates": [
      81.4471435546875,
      23.61432859499169
    ]
  }
station.save()

然而,这会产生错误Could not save document (location object expected, location array not in correct format)

Mongoengine文档说这样的字典应该没问题。我在这里错过了什么?

3 个答案:

答案 0 :(得分:4)

我遇到类似的问题一次,在我的情况下,它发生是因为我使用GeoPointField构建第一个原型然后移动到PointField而不删除或迁移我的数据库,对我来说,因为db中只有虚拟数据,问题刚刚开始新的我的数据库完成下降后解决。我希望它能有所帮助。

答案 1 :(得分:1)

将一些数据从GeoPointField转换为PointField后,我遇到了类似的问题(使用MongoEngine)。

这是由两个索引的存在引起的。一个用于GeoPointFIeld,另一个用于PointField。我放弃了第一个索引,一切都很顺利。

您可以使用db.collection.getIndexes();检查索引,然后使用db.collection.dropIndex("index_name")

删除索引

答案 2 :(得分:-3)

我先使用GeoPointField然后转换为PointField。我把数据丢弃在集合中但不是集合本身,这就产生了这个问题。

删除该集合解决了这个问题。