Ich habe ein Modell wie folgt:

class Station(Document):
    location = PointField()

Der Versuch, Daten wie folgt zu schreiben:

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

Dies gibt jedoch den Fehler Could not save document (location object expected, location array not in correct format)

Die Mongoengine-Dokumentation besagt, dass ein solches Wörterbuch in Ordnung sein sollte. Was vermisse ich hier?

3
Nithin 20 Nov. 2013 im 17:46

3 Antworten

Beste Antwort

Ich hatte zuerst GeoPointField verwendet und dann in PointField konvertiert. Ich hatte die Daten in der Sammlung gelöscht, aber nicht die Sammlung selbst, was dieses Problem verursachte.

Das Löschen der Sammlung löste das Problem.

-2
Nithin 21 Dez. 2013 im 05:15

Ich hatte ein ähnliches Problem, nachdem ich einige Daten von GeoPointField nach PointField konvertiert hatte (mit MongoEngine).

Es wurde durch das Vorhandensein von zwei Indizes verursacht. Eine für GeoPointFIeld und die andere für PointField. Ich ließ den ersten Index fallen und alles ging gut.

Sie können Ihre Indizes mit db.collection.getIndexes(); überprüfen und den Index dann mit db.collection.dropIndex("index_name") löschen

1
Mi-Creativity 3 Dez. 2015 im 19:16

Ich habe einmal ein ähnliches Problem. In meinem Fall passiert es, weil ich GeoPointField verwende, um den ersten Prototyp zu erstellen, und dann zu PointField wechsle, ohne meine Datenbank zu löschen oder zu migrieren. Da sich nur Dummy-Daten in der Datenbank befanden, ist das Problem unmittelbar danach behoben neu anfangen meine db macht einen kompletten drop. Ich hoffe es kann hilfreich sein.

4
Daniel M. 5 Dez. 2013 im 18:35