下面的查询完全忽略了第二个条件(filter
,即字符串字段)。
但是当注释whereNear()
条件时,将应用过滤器。
whereNear()
条件会导致忽略其他条件吗?
如果是,在这种情况下,正确的方法是什么?
ParseQuery<ParseObject> query = ParseQuery.getQuery("Post");
query.whereNear("location", new ParseGeoPoint(latitude, longitude));
query.whereEqualTo("filter", filter);
query.orderByDescending("createdAt");
List<ParseObject> objects = query.find()
答案 0 :(得分:1)
whereNear()不应该是whereEqualTo()被忽略的原因(我有一个与你的条件相同的应用程序,它工作正常)。您更关注orderByDescending(),因为它优先于whereNear()。
注意:根据解析文档,应用了额外的orderByAscending()/ orderByDescending()约束,它将优先于距离排序。
答案 1 :(得分:1)
来自Parse documentation,
如果使用whereNear()附加orderByAscending()/ orderByDescending()约束,则它将优先于距离排序。
因此,whereNear()
不会覆盖orderByDescending()
。这是相反的方式。此外,
使用
whereNear()
约束也会将结果限制在100英里范围内。
如果在100英里内的给定点附近没有满足第二个过滤器的点。我想这就是为什么你会得到意想不到的结果。