我在一张表(HashTag -classname)上有大约 13000 条记录。我想在一个查询中检索所有这些。但是解析每个查询只允许 1000。任何其他方式获取所有记录..
ParseQuery<ParseObject> query = ParseQuery.getQuery("HashTag");
query.whereExists("Tag"); query.orderByAscending("Type"); query.setLimit(1000);
query.findInBackground(new FindCallback<ParseObject>() {
@Override
public void done(List<ParseObject> list,
ParseException e) {
// TODO Auto-generated method stub
if (e == null)
{
if (list.size() > 0) {
for (int i = 0; i < list.size(); i++) {
ParseObject p = list.get(i);
String tagid = p.getString("Tag");
String Type = p.getString("Type");
class2 c2 = new class2();
c2.type = "" + Type;
c2.tag = "" + tagid;
listClass2.add(c2);
}
}
最佳答案
当然,您可以在同一个表上运行多个查询,每次查询的 skip
属性递增 1000:
- 通过
query.count()
获取记录总数,并用它来设置一个'skip'变量 - 对每 1000 条记录运行一个新查询,相应地更新您的 skip 属性
- 当每个查询返回时正常处理记录
像这样:
ParseQuery<ParseObject> query = ParseQuery.getQuery("HashTag");
query.whereExists("Tag");
query.countInBackground(new CountCallback() {
public void done(int count, ParseException e) {
if (e == null) {
// The count request succeeded. Run the query multiple times using the query count
int numQueries = Math.ceil(count / 1000); //Gives you how many queries to run
for(int skipNum = 0; l < numQueries; l++){
ParseQuery<ParseObject> query = ParseQuery.getQuery("HashTag");
query.whereExists("Tag"); query.orderByAscending("Type");
query.setLimit(skipNum * 1000);
query.findInBackground(new FindCallback<ParseObject>() {
//Run your query as normal here
}
}
} else {
// The request failed
}
}
关于android - 从表 -Parse.com 获取所有记录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25998104/