@@ -102,7 +102,6 @@ def _get_feature_list(self, filterObj, sortList=[], skip=0, maxitems=1,
102102 if sortList :
103103 featurecursor = featurecursor .sort (sortList )
104104
105- matchCount = self .featuredb [self .collection ].count_documents (filterObj )
106105 featurecursor .skip (skip )
107106 featurecursor .limit (maxitems )
108107 featurelist = list (featurecursor )
@@ -111,7 +110,7 @@ def _get_feature_list(self, filterObj, sortList=[], skip=0, maxitems=1,
111110 if skip_geometry :
112111 item ['geometry' ] = None
113112
114- return featurelist , matchCount
113+ return featurelist
115114
116115 @crs_transform
117116 def query (self , offset = 0 , limit = 10 , resulttype = 'results' ,
@@ -144,20 +143,28 @@ def query(self, offset=0, limit=10, resulttype='results',
144143 ASCENDING if (sort ['order' ] == '+' ) else DESCENDING )
145144 for sort in sortby ]
146145
147- featurelist , matchcount = self ._get_feature_list (
148- filterobj , sortList = sort_list , skip = offset , maxitems = limit ,
149- skip_geometry = skip_geometry )
150-
151- if resulttype == 'hits' :
152- featurelist = []
153-
154146 feature_collection = {
155147 'type' : 'FeatureCollection' ,
156- 'features' : featurelist ,
157- 'numberMatched' : matchcount ,
158- 'numberReturned' : len (featurelist )
148+ 'features' : []
159149 }
160150
151+ if self .count or resulttype == 'hits' :
152+ matched = self .featuredb [self .collection ].count_documents (
153+ filterobj )
154+ LOGGER .debug (f'Found { matched } result(s)' )
155+ feature_collection ['numberMatched' ] = matched
156+
157+ if resulttype == 'hits' :
158+ return feature_collection
159+
160+ featurelist = self ._get_feature_list (
161+ filterobj , sortList = sort_list , skip = offset , maxitems = limit ,
162+ skip_geometry = skip_geometry
163+ )
164+
165+ feature_collection ['features' ] = featurelist
166+ feature_collection ['numberReturned' ] = len (featurelist )
167+
161168 return feature_collection
162169
163170 @crs_transform
@@ -168,8 +175,7 @@ def get(self, identifier, **kwargs):
168175 :param identifier: feature id
169176 :returns: dict of single GeoJSON feature
170177 """
171- featurelist , matchcount = self ._get_feature_list (
172- {'_id' : ObjectId (identifier )})
178+ featurelist = self ._get_feature_list ({'_id' : ObjectId (identifier )})
173179 if featurelist :
174180 return featurelist [0 ]
175181 else :
0 commit comments