Merge pull request #2478 from bagerard/add_geonear_aggregation_test
Add $geonear aggregation test
This commit is contained in:
		| @@ -6,6 +6,7 @@ Changelog | ||||
| Development | ||||
| =========== | ||||
| - (Fill this out as you fix issues and develop your features). | ||||
| - Bugfix: manually setting SequenceField in DynamicDocument doesn't increment the counter #2471 | ||||
|  | ||||
| Changes in 0.22.1 | ||||
| ================= | ||||
|   | ||||
| @@ -1162,7 +1162,7 @@ class ReferenceField(BaseField): | ||||
|  | ||||
|         :param document_type: The type of Document that will be referenced | ||||
|         :param dbref:  Store the reference as :class:`~pymongo.dbref.DBRef` | ||||
|           or as the :class:`~pymongo.objectid.ObjectId`.id . | ||||
|           or as the :class:`~pymongo.objectid.ObjectId`. | ||||
|         :param reverse_delete_rule: Determines what to do when the referring | ||||
|           object is deleted | ||||
|         :param kwargs: Keyword arguments passed into the parent :class:`~mongoengine.BaseField` | ||||
|   | ||||
| @@ -248,6 +248,34 @@ class TestQuerysetAggregate(MongoDBTestCase): | ||||
|  | ||||
|         assert list(data) == [{"_id": p1.pk, "name": "ISABELLA LUANNA"}] | ||||
|  | ||||
|     def test_queryset_aggregation_geonear_aggregation_on_pointfield(self): | ||||
|         """test ensures that $geonear can be used as a 1-stage pipeline and that | ||||
|         MongoEngine does not interfer with such pipeline (#2473) | ||||
|         """ | ||||
|  | ||||
|         class Aggr(Document): | ||||
|             name = StringField() | ||||
|             c = PointField() | ||||
|  | ||||
|         Aggr.drop_collection() | ||||
|  | ||||
|         agg1 = Aggr(name="X", c=[10.634584, 35.8245029]).save() | ||||
|         agg2 = Aggr(name="Y", c=[10.634584, 35.8245029]).save() | ||||
|  | ||||
|         pipeline = [ | ||||
|             { | ||||
|                 "$geoNear": { | ||||
|                     "near": {"type": "Point", "coordinates": [10.634584, 35.8245029]}, | ||||
|                     "distanceField": "c", | ||||
|                     "spherical": True, | ||||
|                 } | ||||
|             } | ||||
|         ] | ||||
|         assert list(Aggr.objects.aggregate(*pipeline)) == [ | ||||
|             {"_id": agg1.id, "c": 0.0, "name": "X"}, | ||||
|             {"_id": agg2.id, "c": 0.0, "name": "Y"}, | ||||
|         ] | ||||
|  | ||||
|  | ||||
| if __name__ == "__main__": | ||||
|     unittest.main() | ||||
|   | ||||
		Reference in New Issue
	
	Block a user