Comments in unit tests should say "degrees," not "miles": MongoDB docs are confusing, only the spherical queries $nearSphere and $centerSphere use radians. The $near and $center queries, which are the ones that are used in these mongoengine tests, use the same units as the coordinates. For distances on the earth, this means they use degrees. (This is also why the 2d indexes can be used for other 2d data, not just points on the earth.) Here's a mongo shell session demonstrating that $near and $center use degrees, and that $nearSphere and $centerSphere are the ones that use radians: https://gist.github.com/964126 So, these mongoengine tests are using $near and $center, which use degrees, not miles, kilometers, or radians. Thanks glyphobet for the clarification and taking time to explain it!
=========== MongoEngine =========== :Info: MongoEngine is an ORM-like layer on top of PyMongo. :Author: Harry Marr (http://github.com/hmarr) About ===== MongoEngine is a Python Object-Document Mapper for working with MongoDB. Documentation available at http://hmarr.com/mongoengine/ - there is currently a `tutorial <http://hmarr.com/mongoengine/tutorial.html>`_, a `user guide <http://hmarr.com/mongoengine/userguide.html>`_ and an `API reference <http://hmarr.com/mongoengine/apireference.html>`_. Installation ============ If you have `setuptools <http://peak.telecommunity.com/DevCenter/setuptools>`_ you can use ``easy_install -U mongoengine``. Otherwise, you can download the source from `GitHub <http://github.com/hmarr/mongoengine>`_ and run ``python setup.py install``. Dependencies ============ - pymongo 1.1+ - sphinx (optional - for documentation generation) Examples ======== Some simple examples of what MongoEngine code looks like:: class BlogPost(Document): title = StringField(required=True, max_length=200) posted = DateTimeField(default=datetime.datetime.now) tags = ListField(StringField(max_length=50)) class TextPost(BlogPost): content = StringField(required=True) class LinkPost(BlogPost): url = StringField(required=True) # Create a text-based post >>> post1 = TextPost(title='Using MongoEngine', content='See the tutorial') >>> post1.tags = ['mongodb', 'mongoengine'] >>> post1.save() # Create a link-based post >>> post2 = LinkPost(title='MongoEngine Docs', url='hmarr.com/mongoengine') >>> post2.tags = ['mongoengine', 'documentation'] >>> post2.save() # Iterate over all posts using the BlogPost superclass >>> for post in BlogPost.objects: ... print '===', post.title, '===' ... if isinstance(post, TextPost): ... print post.content ... elif isinstance(post, LinkPost): ... print 'Link:', post.url ... print ... === Using MongoEngine === See the tutorial === MongoEngine Docs === Link: hmarr.com/mongoengine >>> len(BlogPost.objects) 2 >>> len(HtmlPost.objects) 1 >>> len(LinkPost.objects) 1 # Find tagged posts >>> len(BlogPost.objects(tags='mongoengine')) 2 >>> len(BlogPost.objects(tags='mongodb')) 1 Tests ===== To run the test suite, ensure you are running a local instance of MongoDB on the standard port, and run ``python setup.py test``. Community ========= - `MongoEngine Users mailing list <http://groups.google.com/group/mongoengine-users>`_ - `MongoEngine Developers mailing list <http://groups.google.com/group/mongoengine-dev>`_ - `#mongoengine IRC channel <irc://irc.freenode.net/mongoengine>`_ Contributing ============ The source is available on `GitHub <http://github.com/hmarr/mongoengine>`_ - to contribute to the project, fork it on GitHub and send a pull request, all contributions and suggestions are welcome!
Description
Languages
Python
100%