Mongoengine PointField дает ожидаемое местоположение объекта, массив местоположения не в правильном формате ошибка


У меня есть следующая модель:

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 3

3 ответа:

Однажды я столкнулся с подобной проблемой, в моем случае это происходит потому, что я использую GeoPointField для создания первого прототипа, а затем перемещаюсь в PointField, не удаляя и не перенося свою базу данных, для меня, и поскольку в БД были только фиктивные данные, проблема решается сразу после запуска новой моей БД, выполняющей полное удаление. Я надеюсь, что это может быть полезно.

У меня была аналогичная проблема после преобразования некоторых данных из GeoPointField в PointField (используя MongoEngine).

Это было вызвано наличием двух индексов. Один для GeoPointFIeld , а другой для PointField. Я сбросил первый индекс, и все прошло нормально.

Вы можете проверить свои индексы с помощью db.collection.getIndexes(); , а затем удалить индекс с помощью db.collection.dropIndex("index_name")

Сначала я использовал GeoPointField, а затем преобразовал его в PointField. Я уронил данные в коллекцию, но не саму коллекцию, эхич создал эту проблему.

Удаление коллекции решило проблему.