sql >> Databasteknik >  >> NoSQL >> MongoDB

Hur man formaterar data för MongoEngine PointField

Jag kunde inte återskapa ditt fel här. Kan du meddela vilken version av mongoengine du arbetar med?

Så här kan jag implementera ett enkelt exempel:

på mina models.py

class PointFieldExample(Document):

    point = PointField()
    name = StringField()

    def toJSON(self):
       pfeJSON = {}
       pfeJSON['id'] = str(self.id)
       pfeJSON['point'] = self.point
       pfeJSON['name'] = str(self.name)
       return pfeJSON

på Django-skal

$ python manage.py shell
>>> from mongoengine import *
>>> from myAwesomeApp.app.models import PointFieldExample

>>> pfe = PointFieldExample()
>>> pfe.point = 'random invalid content'
>>> pfe.toJSON()
{'id': 'None', 'name': 'None', 'point': 'random invalid content'}
>>> pfe.save()
ValidationError: ValidationError (PointFieldExample:None) (PointField can only accept lists of [x, y]: ['point'])

>>> pfe.point = [-15, -47]
>>> pfe.save()
<PointFieldExample: PointFieldExample object>

>>> pfe.toJSON()
{'id': '5345a51dbeac9e0c561b1892', 'name': 'None', 'point': [-15, -47]}

på min DB

> db.point_field_example.findOne()
{
    "_id" : ObjectId("5345a51dbeac9e0c561b1892"),
    "point" : {
        "type" : "Point",
        "coordinates" : [ 
            -47, 
            -15
        ]
    }
}

Hälsningar




  1. Få en distinkt aggregering av ett matrisfält över index

  2. Kapslad gruppering med MongoDB

  3. Synkronisera MongoDB via ssh

  4. Hur ställer man in en anslutning till Redis Sentinel med Jedis-biblioteket?