Hi all

I use GeoServer 2.15 and MongoDB 3.6

I've created a collection with data from  here
<https://docs.geoserver.org/stable/en/user/data/app-schema/mongo-tutorial.html> 
 
(just two records), created 2dsphere index 

Then I created a layer from that collection and tried to request it by WMS
with cql_filter in URL params.


1. when I use simple attributes (that are not multiple) in the filter all is
fine (points are visible):

  - filter: "contract.mail" ILIKE '%@mail.com%' OR "name" ILIKE '%station%'

  - mongo log:  { ... , filter: { }, projection: { geometry: 1,
contact.mail: 1, name: 1 }, ... }

<http://osgeo-org.1560.x6.nabble.com/file/t385081/stations-stations.png> 

2. when I use attributes that are multiple in the filter then it DOES NOT
work (there is no any point on received PNG):

  - filter: "measurements.name" ILIKE '%wind%' OR "measurements.unit" ILIKE
'%c%'

  - mongo log: { ... , filter: { }, projection: {geometry: 1,
measurements.unit: 1, measurements.name: 1}, ... }

<http://osgeo-org.1560.x6.nabble.com/file/t385081/stations-stations_%281%29.png>
 

3. when I change OR to AND in previous filter then it's works fine:

  - filter: "measurements.name" ILIKE '%wind%' AND "measurements.unit" ILIKE
'%c%'

  - mongo log: { ..., filter: { $and: [ { measurements.name: /^.*wind.*$/i
}, { measurements.unit: /^.*p.*$/i } ] }, projection: { geometry: 1 }, ... }

<http://osgeo-org.1560.x6.nabble.com/file/t385081/stations-stations_%282%29.png>
 

So I concluded that GeoServer does AND operation by sending filter to
mongoDB. And OR operation by itself requesting all records from collection.
But with attributes that are multiple something goes wrong. I think it's a
bug.

If you have any sugestions please tell me.



--
Sent from: http://osgeo-org.1560.x6.nabble.com/GeoServer-Dev-f3819232.html


_______________________________________________
Geoserver-devel mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/geoserver-devel

Reply via email to