Parse platform PFQuery限制查询

Parse platform PFQuery限制查询,parse-platform,Parse Platform,我有一个用户,activty,photo类。其中用户喜欢其他用户附加的活动类截图 我的问题是,当用户喜欢的数量超过1000时,“filter likes”查询的限制将导致下面的方法获取用户已经喜欢的用户,因为活动(喜欢)的数量超过1000。这里应该做些什么来避免这种情况 -(void) loaddata { PFQuery *filterUsers = [PFUser query]; [filterUsers whereKey:kMUParseUserAccountStatus equalTo

我有一个用户,activty,photo类。其中用户喜欢其他用户附加的活动类截图

我的问题是,当用户喜欢的数量超过1000时,“filter likes”查询的限制将导致下面的方法获取用户已经喜欢的用户,因为活动(喜欢)的数量超过1000。这里应该做些什么来避免这种情况

-(void) loaddata {

PFQuery *filterUsers = [PFUser query];
[filterUsers whereKey:kMUParseUserAccountStatus equalTo:@"Active"];
filterUsers.limit =1000;


PFQuery *filterLikes = [[PFQuery alloc] initWithClassName:kMUActivityClassKey];
[filterLikes whereKey:kMUActivityUserFromKey equalTo:[PFUser currentUser]];
filterLikes.limit =1000;


PFQuery *query = [[PFQuery alloc] initWithClassName:kMUPhotoClassKey];
[query whereKey:kMUPhotoUserKey notEqualTo:[PFUser currentUser]];
[query whereKey:kMUPhotoPicturePriorityKey equalTo:@(0)];
[query whereKey:kMUPhotoUserKey matchesQuery:filterUsers];
[query whereKey:kMUPhotoUserKey doesNotMatchKey:kMUActivityUserToKey inQuery:filterLikes];
[query includeKey:kMUPhotoUserKey];

[query findObjectsInBackgroundWithBlock:^(NSArray *objects, NSError *error) {

    if(!error)
    {

        if(objects.count>0)
        {


            [self updateInformation];

        }


        else
        {
            if(objects.count==0)
            {
                self.hasMorePhotos = false;
            }

        }
    }


}];
}

你需要绕过1000条记录的限制

如果我理解正确,您希望显示当前用户尚未喜欢的照片。您的解决方案效率不高,因为您在1000个对象的查询中比较一个键(或者,如果限制不是1000,您的解决方案可能需要比较数千个对象)

如果您需要过滤掉喜欢的照片,您可以在用户上存储objectid数组。当用户喜欢照片时,可以将此objectId添加到用户对象上的数组中,或者添加到与用户绑定的另一个对象中。然后,在查询中,可以与此数组进行比较,而不是与另一个查询进行比较:

[query whereKey:@"objectId" notContainedIn:arrayOfLikedObjectIds];

但是这个解决方案如何有效?假设我们谈论的是instagram。每个用户都有1000个喜欢的东西,而您打算将它们存储在一个数组中?然后,您需要对该数组进行排序(尝试教解析这样做),并希望notContainedIn:ArrayOflikeDobjects将从排序数组中受益,或者会有巨大的性能损失。我不知道一个好的解决方案,但似乎比较后端上的两个表应该非常有效,因为它们可能不是阵列备份的。您解决了这个问题吗?