我的目标是检索一个计数,该计数可用于显示基于相同标准接收推送的设备数量的估计值。但是,我相信我遇到了MongoDB中的一个错误,我找到了解决办法,但我正在寻找使用Parse的类似解决方法。
此链接提供问题说明和可能的解决方法:https://groups.google.com/forum/?fromgroups=#!topic/mongomapper/MfRDh2vtCFg
此stackoverflow:Mongo and find always limited to 100 with geo data
我无法弄清楚如何让解决方法与Parse一起使用。 Parse的REST API地理查询文档显示了一个使用$ within的示例,但似乎唯一有效的$ within查询是$ box查询。我试图使用$ center,$ centerSphere等,但是Parse刚刚返回了一个错误,它预计键“$ box”。
我正在使用Parse REST API。该查询看起来像下面的一些格式,使其可读:
installations/?where={
"channels": {
"$in": ["Everyone"],
"$nin": []
},
"location": {
"$nearSphere": {
"__type": "GeoPoint",
"latitude": 35.4432,
"longitude": -97.6238
},
"$maxDistanceInMiles": 10
}
}
&count=1
&limit=0
我的问题: 有没有办法让建议的解决方法在Parse中运行?也许是没有证件的东西?如果不使用REST API可能是.NET SDK?
答案 0 :(得分:0)
到目前为止,我还没有为此问题找到一个很好的解决方法。我将在云代码中进行此操作,您可以递归地生成大量单独的计数请求,然后返回结果,而不会为每个请求提供网络开销。
创建您的云功能和查询以使用所有相关标准运行,然后使用如下函数:
function recursiveCountForQuery(query, count) {
console.log("recursiveCountForQuery now @ " + count);
query.limit(100);
query.skip(count);
return query.find().then(function(values) {
var number = values.length;
var total = count + number;
if (number < 100 || total >= 500) {
return Parse.Promise.as(total);
} else {
return recursiveCountForQuery(query, total);
}
});
}
运行查询并等待承诺返回计数(total >= 500
因此它运行时间不会太长但可以根据您的使用情况删除/更改。)